Publicado por: Gustavo Henrique | Março 26, 2008

Loop em tabelas utilizando o Firebird.

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


Respostas

  1. Parabéns pelas dicas…


Deixe uma resposta

Sua resposta:

Categorias