Firebird - Fazendo Um Loop Nas Tabelas Usando o Execute Statment

1
Fazendo um Loop nas Tabelas usando o Execute Statment … Imagine o Cenário vc não sabe em qual tabela esta a menor data de um certo campo, e precisamos fazer um Loop nas tabelas para descobrirmos qual a data é menor. Tabelas Campo Documento1 DataInicial Documento2 DataInicial Documento3 DataInicial Documento4 DataInicial CREATE PROCEDURE SP_DOCUMENTO_MENORDATA RETURNS ( OPDATAFINAL DATE) AS DECLARE VARIABLE VNOMETABELA VARCHAR(100); DECLARE VARIABLE VDATAINICIAL DATE; DECLARE VARIABLE VSQL VARCHAR(1000); begin OPDATAFINAL = CURRENT_DATE; FOR SELECT DISTINCT T.RDB$RELATION_NAME TABELA FROM RDB$USER_PRIVILEGES T WHERE T.RDB$RELATION_NAME NOT LIKE ‘RDB$%’ AND T.RDB$OBJECT_TYPE=0 AND T.RDB$RELATION_NAME LIKE ‘DOCUMENTO%’ ORDER BY 1 INTO :VNOMETABELA DO BEGIN VSQL = ”; VSQL = ‘SELECT MIN(DATAINICIAL) FROM ‘ || :VNOMETABELA; EXECUTE STATEMENT VSQL INTO :VDATAINICIAL; IF (:VDATAINICIAL < :OPDATAFINAL) THEN BEGIN OPDATAFINAL = :VDATAINICIAL; END END end

description

Firebird

Transcript of Firebird - Fazendo Um Loop Nas Tabelas Usando o Execute Statment

Fazendo um Loop nas Tabelas usando o Execute Statment

Fazendo um Loop nas Tabelas usando o Execute Statment

Imagine o Cenrio vc no sabe em qual tabela esta a menor data de um certo campo, e precisamos fazer um Loop nas tabelas para descobrirmos qual a data menor.

TabelasCampo

Documento1DataInicialDocumento2DataInicialDocumento3DataInicialDocumento4DataInicial

CREATE PROCEDURE SP_DOCUMENTO_MENORDATARETURNS (OPDATAFINAL DATE)ASDECLARE VARIABLE VNOMETABELA VARCHAR(100);DECLARE VARIABLE VDATAINICIAL DATE;DECLARE VARIABLE VSQL VARCHAR(1000);beginOPDATAFINAL = CURRENT_DATE;FORSELECT DISTINCT T.RDB$RELATION_NAME TABELAFROM RDB$USER_PRIVILEGES TWHERE T.RDB$RELATION_NAME NOT LIKE RDB$% AND T.RDB$OBJECT_TYPE=0 AND T.RDB$RELATION_NAME LIKE DOCUMENTO%ORDER BY 1INTO :VNOMETABELADOBEGINVSQL = ;VSQL = SELECT MIN(DATAINICIAL) FROM || :VNOMETABELA;EXECUTE STATEMENT VSQL INTO :VDATAINICIAL;IF (:VDATAINICIAL < :OPDATAFINAL) THENBEGINOPDATAFINAL = :VDATAINICIAL;ENDENDend