[firebase-br] Ajuda Procedure para gerar Script Inserção
Valmir
valmir em wva.com.br
Seg Nov 27 16:24:23 -03 2017
ALGUEM PODERIA ME AJUDAR NESTE PROCEDURE ABAIXO
SET TERM ^ ;
create or alter procedure PROCEXTRACTINSERT (
CONDICAO varchar(200),
TABELA varchar(100))
returns (
SCRIPT varchar(8000))
as
declare variable STMT_SELECT varchar(4000);
declare variable STMT varchar(4000);
declare variable "_FIRST" varchar(100);
declare variable "_LAST" varchar(100);
declare variable CHUNK varchar(4000);
begin
Chunk = '';
Script = '';
stmt = '';
stmt = SELECT distinct(r.RDB$FIELD_NAME) FROM RDB$RELATION_FIELDS r
WHERE r.RDB$RELATION_NAME = || Upper(TABELA) || ORDER BY
r.RDB$FIELD_POSITION;
execute statement
SELECT first 1 RDB$FIELD_NAME FROM RDB$RELATION_FIELDS
WHERE RDB$RELATION_NAME=|| Upper(TABELA) || order by RDB$FIELD_POSITION
asc; into : '_FIRST';
execute statement
SELECT first 1 RDB$FIELD_NAME FROM RDB$RELATION_FIELDS
WHERE RDB$RELATION_NAME= || Upper(TABELA) || order by RDB$FIELD_POSITION
desc ; into : '_LAST';
for execute statement stmt into :chunk
do
if (Chunk is not null) then
begin
if( Chunk =TRIM('_FIRST')) then
begin
stmt_select = select insert into ||TABLENAME|| values (||coalesce(
|| TRIM(Chunk)||,) ;
end
else
begin
if(Chunk =TRIM('_LAST')) then
begin
stmt_select = stmt_select ||
||,||trim(coalesce(||TRIM(Chunk)||,0))||) from ||TABLENAME|| ||condicao;
end
else
begin
stmt_select = stmt_select ||
||,||trim(coalesce(||TRIM(Chunk)||,0)) ;
end
end
end
for execute statement stmt_select into :longline
do
suspend;
end
^
SET TERM ; ^
/* Privilégios exisitentes neste procedimento */
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
Livre
de vírus. www.avast.com
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>.
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
Mais detalhes sobre a lista de discussão lista