[firebase-br] Múltiplas citações à mesma CTE em um Execute Block

Carlos H. Cantu listas em warmboot.com.br
Segunda Maio 15 15:55:30 -03 2023


CTE é atrelada ao select onde ela foi definida, portanto, vc não pode 
referenciar uma CTE de um select que não seja aquele que ela foi definida.

Eu não conheço a lógica do seu código original, mas dependendo, vc pode usar
"union all" pra juntar os dois selects e usar uma única CTE.

[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 4 - www.firebase.com.br/guiafb4.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

TFvl> Boa tarde, estou refatorando alguns SQL's antigos e num determinado Execute
TFvl> Block eu precisaria referenciar um mesmo CTE mais de uma vez.

TFvl> O problema é que a segunda referência me retorna um erro de:






TFvl> *Undefined name.Dynamic SQL Error.SQL error code = -204.Table
TFvl> unknown.ITEM_VENDA.At line 24, column 21.*

TFvl> O Código SQL é este(Alterei para fins do exemplo):


























TFvl> *EXECUTE BLOCK(IP_DATA_INICIAL DATE = :IP_DATA_INICIAL,
TFvl> IP_DATA_FINAL DATE = :IP_DATA_FINAL)ASDECLARE VARIABLE V_VALOR_TOTAL_VENDAS
TFvl> NUMERIC(15,3);DECLARE VARIABLE V_QUANTIDADE_TOTAL_VENDAS
TFvl> NUMERIC(15,3);BEGIN  WITH ITEM_VENDA AS (      SELECT V.ID_CLIENTE,
TFvl>      IVP.VALOR_TOTAL,             IVP.VALOR_FRETE,
TFvl>  IVP.QUANTIDADE        FROM ITEM_VENDA_PRODUTO IVP        JOIN VENDA V ON
TFvl> (IVP.ID_VENDA = V.ID_VENDA)       WHERE V.DATA_FATURAMENTO BETWEEN
TFvl> :IP_DATA_INICIAL AND :IP_DATA_FINAL  )  SELECT SUM(IV.VALOR_TOTAL +
TFvl> IV.VALOR_FRETE) AS VALOR_CLIENTE,         SUM(IV.QUANTIDADE) AS
TFvl> QUANTIDADE_CLIENTE    FROM ITEM_VENDA IV    INTO :V_VALOR_TOTAL_VENDAS,
TFvl> :V_QUANTIDADE_TOTAL_VENDAS;  SELECT SUM(IV2.VALOR_TOTAL + IV2.VALOR_FRETE)
TFvl> AS VALOR_CLIENTE,         SUM(IV2.QUANTIDADE) AS QUANTIDADE_CLIENTE    FROM
TFvl> ITEM_VENDA IV2    INTO :V_VALOR_TOTAL_VENDAS,
TFvl> :V_QUANTIDADE_TOTAL_VENDAS;END*

TFvl> Este é o comportamento esperado ou estou fazendo alguma coisa errada?
TFvl> ______________________________________________
TFvl> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
TFvl> Para saber como gerenciar/excluir seu cadastro na lista, use:
TFvl> http://www.firebase.com.br/fb/artigo.php?id=1107
TFvl> Para consultar mensagens antigas: http://www.firebase.com.br/pesquisa_lista.html




Mais detalhes sobre a lista de discussão lista