Pessoal, estou com essa dificuldade, quando tento alterar a procedure pela aplicação, passando a seguinte DDL:
(Procedure reduzida para não ocupar muito espaço – Não ligue pra lógica, que aqui eu entendo, rsrs)
SET TERM ^ ;
ALTER PROCEDURE P_MOVIMENTO (
CODIGO VARCHAR(10),
DT_INICIO DATE,
STATUS INTEGER)
RETURNS ( MOV_TOTAL NUMERIC(20,5))
AS
DECLARE VARIABLE VALOR_TEMP NUMERIC(10,4);
BEGIN
MOV_TOTAL = 0.00;
BEGIN
IF (STATUS = ) THEN /* HABILITADO*/
BEGIN
/* CALCULO TOTAL MOVIMENTADO */
SELECT SUM(MT.QTDE * M.VALOR_UNIT)
FROM MOV_MATERIAL MT
LEFT JOIN MATERIAIS M ON (MT.COD_MAT = M.CODIGO)
LEFT JOIN DER_RELAC DR ON (MT.COD_DOCTO = DR.CODIGO)
WHERE MT.CONTA_DECL = : CODIGO
AND MT.CONTA_DECL IS NOT NULL
AND MT.COD_DOCTO IS NOT NULL
AND DR.DATA < :DT_INICIO
INTO :VALOR_TEMP; /* <-- Problema está ocorrendo aqui */
IF (VALOR_TEMP IS NULL) THEN VALOR_TEMP = 0.00;
MOV_TOTAL = VALOR_TEMP;
/* Continua os cálculos para outros status .... */
END
END
END^
SET TERM ; ^
No código da aplicação eu uso o ExecQuery do TIBSQL do componente InterBase para passar a DDL para o banco, mas quando chega na linha “INTO :VALOR_TEMP;” dá o seguinte erro:
Dynamic SQL Error
- SQL error code = -104
- Token unknown - line 32, char 16
- ?
Para resolver esse problema, já tentei fazer as seguintes ações:
- “Dropar” a procedure (sem depedência de outras procedures) e criá-la novamente.
- Paramcheck = false
- Usar o TIBScript ao invés do TIBSQL, mas não tem no componente Interbase da versão que uso.
Até agora não consegui resolver o problema.
Uso Delphi 7 no desenvolvimento da aplicação e Banco Firebird 1.5 com IBExpert.
Alguém poderia me sugerir algo?
AVISO: Dúvidas devem ser postadas no forum principal ( Delphi ) e não no forum ( Tutoriais Delphi ) onde somente deve ter códigos prontos .. ok ?