[firebase-br] Pesquisar produto com alteração no preço
Paulo Geloramo
paulogeloramo em terra.com.br
Qua Mar 16 15:20:54 -03 2011
Uma solução foi usando Execute Block, gostaria de encontrar
uma solução usando select ou sub-select, pois a solução
com SP ou Execute Block não pode ser usada, não posso
alterar o banco e Execute Block não passa pelos
componentes SQLDataSet devido aos dois pontos
antes dos parâmetros D2010.
Alguma sugestão usando select ou sub-select?
EXECUTE BLOCK RETURNS(
CODIGOF_PRODUTO INTEGER,
NOME_PRODUTO VARCHAR(30),
CODIGOF_EDICAO INTEGER,
PRECO NUMERIC(18,2))
AS
DECLARE EDICAO_ANTERIOR INTEGER;
DECLARE PRECO_ANTERIOR NUMERIC(18,2);
BEGIN
FOR SELECT DISTINCT P.CODIGOF_PRODUTO, P.NOME_PRODUTO, E.CODIGOF_EDICAO,
E.PRECO
FROM NOTA_PONTO_ITEM I
JOIN NOTA_PONTO N ON N.ID_NOTA_PONTO = I.ID_NOTA_PONTO
JOIN EDICAO E ON E.ID_EDICAO = I.ID_EDICAO
JOIN PRODUTO P ON P.ID_PRODUTO = E.ID_PRODUTO
WHERE N.CODIGO_NOTA_PONTO = 1680
ORDER BY P.NOME_PRODUTO
INTO CODIGOF_PRODUTO, NOME_PRODUTO, CODIGOF_EDICAO, PRECO DO
BEGIN
EDICAO_ANTERIOR = CODIGOF_EDICAO - 1;
PRECO_ANTERIOR = 0;
SELECT E.PRECO
FROM EDICAO E
JOIN PRODUTO P ON P.ID_PRODUTO = E.ID_PRODUTO
WHERE P.CODIGOF_PRODUTO = :CODIGOF_PRODUTO AND
E.CODIGOF_EDICAO = :EDICAO_ANTERIOR
INTO PRECO_ANTERIOR;
IF ((PRECO_ANTERIOR > 0) AND (PRECO <> PRECO_ANTERIOR)) THEN
SUSPEND;
END
END
Mais detalhes sobre a lista de discussão lista