Fórum Stored Procedure #44497
26/05/2004
0
Nunca fiz uma SP e estou tendo problemas com minha Primeira SP
O que precisa é passar por parametros o Numero do Banco, a Data Solicitada e 3 Saldos Atuais, usaria 3 Variavies para calcular o saldo e a SP me retornaria os 3 saldos atualizados.... tem como?
o caminho é este. pois está dando erro no 1 IF
CREATE PROCEDURE PROC_POSICAOSALDO (
VARDATA DATE,
VARINVEST NUMERIC(15,2),
VARDISP NUMERIC(15,2),
VARREAL NUMERIC(15,2),
VARBANCO INTEGER)
RETURNS (
SALDOINVEST NUMERIC(15,2),
SALDODISP NUMERIC(15,2),
SALDOREAL NUMERIC(15,2))
AS
DECLARE VARIABLE INVEST NUMERIC(15,2);
DECLARE VARIABLE DISP NUMERIC(15,2);
DECLARE VARIABLE SALDO NUMERIC(15,2);
begin
FOR
SELECT V_POSSALDO.VALOR FROM V_POSSALDO WHERE BANCO = :VARBANCO and (Data <= :VARDATA or DataPre <= :VARDATA) INTO :VARREAL
IF (V_POSSALDO.INVESTIMENTO = 0) THEN
BEGIN
IF (V_POSSALDO.tipo = 0) THEN
BEGIN
Invest = Invest + V_POSSALDO.Valor;
Disp = Disp - V_POSSALDO.Valor;
END
ELSE
BEGIN
Invest = Invest - V_POSSALDO.Valor;
Disp = Disp + V_POSSALDO.Valor;
END
END
ELSE
BEGIN
IF (V_POSSALDO.Data <= :VARDATA) THEN
BEGIN
IF (V_POSSALDO.tipo = 0) THEN
Saldo = Saldo - V_POSSALDO.Valor;
ELSE
Saldo = Saldo + V_POSSALDO.Valor;
END
IF (V_POSSALDO.datapre <= :VARDATA) THEN
BEGIN
IF (V_POSSALDO.tipo = 0) THEN
Disp = Disp - V_POSSALDO.Valor;
ELSE
Disp = Disp + V_POSSALDO.Valor;
END
END
DO
SUSPEND;
end
O que precisa é passar por parametros o Numero do Banco, a Data Solicitada e 3 Saldos Atuais, usaria 3 Variavies para calcular o saldo e a SP me retornaria os 3 saldos atualizados.... tem como?
o caminho é este. pois está dando erro no 1 IF
CREATE PROCEDURE PROC_POSICAOSALDO (
VARDATA DATE,
VARINVEST NUMERIC(15,2),
VARDISP NUMERIC(15,2),
VARREAL NUMERIC(15,2),
VARBANCO INTEGER)
RETURNS (
SALDOINVEST NUMERIC(15,2),
SALDODISP NUMERIC(15,2),
SALDOREAL NUMERIC(15,2))
AS
DECLARE VARIABLE INVEST NUMERIC(15,2);
DECLARE VARIABLE DISP NUMERIC(15,2);
DECLARE VARIABLE SALDO NUMERIC(15,2);
begin
FOR
SELECT V_POSSALDO.VALOR FROM V_POSSALDO WHERE BANCO = :VARBANCO and (Data <= :VARDATA or DataPre <= :VARDATA) INTO :VARREAL
IF (V_POSSALDO.INVESTIMENTO = 0) THEN
BEGIN
IF (V_POSSALDO.tipo = 0) THEN
BEGIN
Invest = Invest + V_POSSALDO.Valor;
Disp = Disp - V_POSSALDO.Valor;
END
ELSE
BEGIN
Invest = Invest - V_POSSALDO.Valor;
Disp = Disp + V_POSSALDO.Valor;
END
END
ELSE
BEGIN
IF (V_POSSALDO.Data <= :VARDATA) THEN
BEGIN
IF (V_POSSALDO.tipo = 0) THEN
Saldo = Saldo - V_POSSALDO.Valor;
ELSE
Saldo = Saldo + V_POSSALDO.Valor;
END
IF (V_POSSALDO.datapre <= :VARDATA) THEN
BEGIN
IF (V_POSSALDO.tipo = 0) THEN
Disp = Disp - V_POSSALDO.Valor;
ELSE
Disp = Disp + V_POSSALDO.Valor;
END
END
DO
SUSPEND;
end
Bruno_solucao
Curtir tópico
+ 0
Responder
Posts
26/05/2004
Afarias
um FOR tem q terminar em um DO ::
FOR
SELECT V_POSSALDO.VALOR FROM V_POSSALDO WHERE BANCO = :VARBANCO and (Data <= :VARDATA or DataPre <= :VARDATA) INTO :VARREAL
DO BEGIN
{IF...}
T+
FOR
SELECT V_POSSALDO.VALOR FROM V_POSSALDO WHERE BANCO = :VARBANCO and (Data <= :VARDATA or DataPre <= :VARDATA) INTO :VARREAL
DO BEGIN
{IF...}
T+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)