[firebase-br] Execute Block
Paulo Geloramo
paulogeloramo em terra.com.br
Ter Jun 19 19:45:32 -03 2012
EXECUTE BLOCK funciona bem no IBExpert, mas com os componentes
do Delphi 2010 tem problemas com o : (dois pontos) antes das variáveis
para diferenciar de campo da tabela.
Alguma sugestão para usar Execute Block com os componentes do Delphi?
Exemplo:
EXECUTE BLOCK (
P_ID_FORNECEDOR INTEGER = :P_ID_FORNECEDOR,
P_ID_NOTA_PONTO INTEGER = :P_ID_NOTA_PONTO)
RETURNS(
R_ID_PONTO INTEGER,
R_CODIGO_PONTO INTEGER,
R_BOX INTEGER,
R_CODIGOF_PRODUTO INTEGER,
R_ID_EDICAO INTEGER,
R_CODIGOF_EDICAO INTEGER,
R_PRECO NUMERIC(18,2),
R_QUANTIDADE INTEGER)
AS
BEGIN
FOR SELECT DISTINCT P.CODIGOF_PRODUTO, E.ID_EDICAO, E.CODIGOF_EDICAO,
E.PRECO
FROM NOTA_PONTO_ITEM I
JOIN EDICAO E ON (E.ID_EDICAO = I.ID_EDICAO)
JOIN PRODUTO P ON (P.ID_PRODUTO = E.ID_PRODUTO)
WHERE I.QUANTIDADE > 0 AND P.ID_FORNECEDOR = :P_ID_FORNECEDOR AND
I.ID_NOTA_PONTO = :P_ID_NOTA_PONTO
INTO R_CODIGOF_PRODUTO, R_ID_EDICAO, R_CODIGOF_EDICAO, R_PRECO DO
BEGIN
FOR SELECT T.ID_PONTO, T.CODIGO_PONTO, T.BOX
FROM PONTO T
INTO R_ID_PONTO, R_CODIGO_PONTO, R_BOX DO
BEGIN
R_QUANTIDADE = 0;
SELECT I.QUANTIDADE
FROM NOTA_PONTO_ITEM I
WHERE I.QUANTIDADE > 0 AND I.ID_NOTA_PONTO = :P_ID_NOTA_PONTO AND
I.ID_EDICAO = :R_ID_EDICAO AND I.ID_PONTO = :R_ID_PONTO
INTO R_QUANTIDADE;
SUSPEND;
END
END
END
Mais detalhes sobre a lista de discussão lista