[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