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

Tallys Ferrante tallysferrante em gmail.com
Segunda Maio 15 16:28:22 -03 2023


Entendi Cantu, obrigado pelo esclarecimento!

Em seg., 15 de mai. de 2023 às 15:55, Carlos H. Cantu via lista <
lista em firebase.com.br> escreveu:

> 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
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
>


Mais detalhes sobre a lista de discussão lista