[firebase-br] Store de Procedure
Rodrigo - Alma Informática Ltda
desenv28 em almainformatica.com.br
Qui Maio 12 10:29:10 -03 2005
Amigos,
Estou precisando de uma ajuda de voces, e o seguinte estou com a seguinte store de procedure abaixo no qual eu peguei no site do firebase so que não estou conseguindo fazer ela funcionar, será que alguem poderia me ajudar.
Quando dou um select na procedure ela esta dando o seguinte erro :
Undefined name.
Dynamic SQL Error.
SQL error code = -204.
Table unknown.
CAIXA.
At line 1, column 15.
SET TERM ^ ;
CREATE PROCEDURE FLUXOCAIXA (
INICIO DATE,
FIM DATE)
RETURNS (
DATA DATE,
HISTORICO VARCHAR(30),
VALOR NUMERIC(15,2),
TIPO CHAR(1))
AS
DECLARE VARIABLE SALDO_ANT_CREDITO NUMERIC(15,2);
DECLARE VARIABLE SALDO_ANT_DEBITO NUMERIC(15,2);
DECLARE VARIABLE SALDO_FINAL NUMERIC(15,2);
begin
/* Primeiro recuperamos a soma dos valores dos debitos anteriores ao
periodo informado para posteriormente calcularmos nosso saldo inicial */
select sum(ap.valor)
from contasapagar ap
where (ap.data < :inicio)
into :saldo_ant_debito;
/* Agora recuperamos a soma dos valores dos creditos anteriores ao
periodo informado */
select sum(ar.valor)
from contasareceber ar
where (ar.data < :inicio)
into :saldo_ant_credito;
/* Caso não haja lancamentos anteriores, a variavel ficara no estado NULL,
como no SQL qualquer operação matemática feita com valores NULL sempre
resulta em NULL, temos que verificar isso e atribuir 0.00 na variavel nula
para que forneça o resultado esperado */
if (:saldo_ant_credito is null) then saldo_ant_credito = 0.00;
if (:saldo_ant_debito is null) then saldo_ant_debito = 0.00;
data = :inicio - 1;
historico = 'SALDO ANTERIOR';
valor = (saldo_ant_credito - saldo_ant_debito);
/* Inicializando a variavel que armazenara o saldo final
com o valor do saldo anterior */
saldo_final = valor;
/* Por questões "estéticas" não queremos ter valores negativos no campo valor,
sendo assim, se o saldo anterior é negativo, devemos informar que o lançamento é
de débito e tornar o valor do saldo positivo, caso contratio informamos que o
lançamento é de crédito.*/
if (:valor < 0) then
begin
tipo = 'D';
valor = valor * -1;
end
else
begin
tipo = 'C';
end
suspend; /* Retornando a primeira linha (registro) com o saldo anterior */
/* o comando a seguir seleciona os registros dentro do periodo informado
buscando na tabela de contas a pagar */
tipo = 'D'; /* Estamos recuperando débitos */
for select ap.data, ap.historico, ap.valor
from contasapagar ap
where (ap.data between :inicio and :fim)
into :data, :historico, :valor
do
begin
/* Subtraimos o valor do lançamento do saldo final */
saldo_final = saldo_final - valor;
/* O suspend a seguir retorna uma "linha" contendo os campos
data, historico, tipo e valor que tem seus valores armazenados
nas variáveis de mesmo nome */
suspend;
end
tipo = 'C'; /* Estamos recuperando créditos */
/* seleciona os registros dentro do periodo informado
buscando na tabela de contas a receber */
for select ar.data, ar.historico, ar.valor
from contasareceber ar
where (ar.data between :inicio and :fim)
into :data, :historico, :valor
do
begin
/* Adicionamos o valor do lançamento ao saldo final */
saldo_final = saldo_final + valor;
/* O suspend a seguir retorna uma "linha" contendo os campos
data, historico, tipo e valor que tem seus valores armazenados
nas variáveis de mesmo nome */
suspend;
end
/* Montamos o ultimo "registro" que conterá os valores do saldo FINAL */
data = :fim;
historico = 'SALDO FINAL';
tipo = 'C';
valor = saldo_final;
suspend;
end
^
SET TERM ; ^
GRANT SELECT ON CONTASAPAGAR TO PROCEDURE FLUXOCAIXA;
GRANT SELECT ON CONTASARECEBER TO PROCEDURE FLUXOCAIXA;
Abraço a todos,
Rodrigo Cristiano Magno
Analista de Sistemas
Alma Informática Ltda - Consultoria e Desenvolvimento de Sistemas
Av. Raja Gabáglia 4055, salas 211/210/208 - São Bento - BH / MG - CEP: 30.360-670
TeleFax: (31) 3296.0084
homepage: http://www.almainformatica.com.br
e-mail: desenv28 em almainformatica.com.br
Mais detalhes sobre a lista de discussão lista