[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