[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