[firebase-br] SUSPEND com WITH
    Marcelo Geyer 
    estanisgeyer em gmail.com
       
    Ter Maio  5 16:32:39 -03 2009
    
    
  
Buenas pessoal,
Tenho um SELECT em minha aplicação que retorna o id, identificação e saldo
de contas. Estou pensando em portar isso para uma procedure, eu até tentei
mas não consegui o resultado esperado em uma tabela. Alguém poderia me dizer
se isso é viável? Segue minha procedure:
CREATE PROCEDURE SALDO_CONTAS
RETURNS
 ( ID INTEGER,
   IDENTIFICACAO VARCHAR(45),
   SALDO MONEY )
AS
DECLARE VARIABLE vID INTEGER;
DECLARE VARIABLE vIDENTIFICACAO VARCHAR(45);
DECLARE VARIABLE vSALDO MONEY;
BEGIN
  for
    WITH CREDITO AS (
      SELECT C.ID, C.IDENTIFICACAO, COALESCE(SUM(M.VALOR), 0) AS TOTALCRED
      FROM CONTAS C
      JOIN CONTAS_MOVIMENTO M ON M.ID_CONTA = C.ID
      WHERE M.LANCAMENTO = 1
      AND C.TIPO != 3
      GROUP BY C.ID, C.IDENTIFICACAO),
    DEBITO AS (
      SELECT C.ID, C.IDENTIFICACAO, COALESCE(SUM(M.VALOR), 0) AS TOTALDEB
      FROM CONTAS C
      JOIN CONTAS_MOVIMENTO M ON M.ID_CONTA = C.ID
      WHERE M.LANCAMENTO = 0
      AND C.TIPO != 3
      GROUP BY C.ID, C.IDENTIFICACAO)
    SELECT CR.ID, CR.IDENTIFICACAO, (CR.TOTALCRED - DE.TOTALDEB) AS TOTAL
    FROM CREDITO CR
    LEFT JOIN DEBITO DE ON CR.ID = DE.ID
    ORDER BY CR.IDENTIFICACAO ASC
    INTO :vID, :vIDENTIFICACAO, :vSALDO
    do
    begin
        suspend;
    end
END^
Abraços,
Marcelo E. Geyer
Standard Net Tecnologia e Informação
    
    
Mais detalhes sobre a lista de discussão lista