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

Parabéns pelas dicas…
Por: Anderson Fagundes de Belém em Abril 11, 2008
às 2:43 pm