Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Error al crear procedimiento almacenado (https://www.clubdelphi.com/foros/showthread.php?t=89996)

KOVNEO 15-03-2016 21:11:42

Error al crear procedimiento almacenado
 
hola una pregunta o mas bien una consulta utilizo firebird.
tengo este procedimiento almacenado el cual permite actualizar fechas, excepto las fechas del año que le mando
me arroja un error, no puedo crearlo si me pudieran orientar de favor y si no es mucha la molestia.

Código SQL [-]
SET TERM ^ ;
CREATE PROCEDURE CAMBIO_AN_CC_VE (
 ANO_NEW     INTEGER)
RETURNS (
 DOCTO_CC_ID INTEGER,
 DOCTO_VE_ID INTEGER,
 FECHA_VE    DATE,
 FECHA_CC    DATE)
AS 
DECLARE VARIABLE lcContinuar CHAR(1);
DECLARE MiCursor CURSOR FOR( SELECT E.DOCTO_DEST_ID,C.FECHA,E.DOCTO_FTE_ID,V.FECHA FROM DOCTOS_ENTRE_SIS E JOIN
 DOCTOS_CC C ON C.DOCTO_CC_ID = E.DOCTO_DEST_ID JOIN
 DOCTOS_VE V ON E.DOCTO_DEST_ID = C.DOCTO_CC_ID AND E.DOCTO_FTE_ID = V.DOCTO_VE_ID
 WHERE EXTRACT(YEAR FROM C.FECHA) NOT LIKE '%:ANO_NEW' AND EXTRACT(YEAR FROM V.FECHA) NOT LIKE '%:ANO_NEW');
BEGIN
 OPEN MiCursor; 
   lcContinuar = 'S';
   WHILE (lcContinuar = 'S') DO BEGIN
      FETCH                        
         MiCursor
      INTO
         : DOCTO_CC_ID,
         : FECHA_CC,
         : DOCTO_VE_ID,
         : FECHA_VE;
      IF (ROW_COUNT = 1) THEN BEGIN   
           UPDATE IMPORTES_DOCTOS_CC SET FECHA =DATEADD(datediff (year from FECHA to cast('01/01/2015' as date)) year to FECHA)
           WHERE DOCTO_CC_ID = : DOCTO_CC_ID;
           UPDATE DOCTOS_VE SET FECHA =DATEADD(datediff (year from FECHA to cast('01/01/2015' as date)) year to FECHA)
           WHERE DOCTO_VE_ID= : DOCTO_VE_ID;
         SUSPEND;
   
      END ELSE
         lcContinuar = 'N';            
   END
   CLOSE MiCursor;
END^^
SET TERM ; ^
GRANT EXECUTE
  ON PROCEDURE CAMBIO_AN_CC_VE
TO USUARIO_MICROSIP WITH GRANT OPTION;^
SET TERM ; ^

me manda este error

Código:

Engine Error (code = 335544351):
unsuccessful metadata update.
STORE RDB$PROCEDURES failed.
SQL Error (code = -607):
This operation is not defined for system tables.

en verdad no se como resolver mi problema

Casimiro Notevi 16-03-2016 00:52:44

Tienes varias sentencias, ejecútalas una a una para asegurarte de cuál es la que está fallando.
Por cierto, no tendrá nada que ver, pero creo que sobra un ^ en:
END^^


La franja horaria es GMT +2. Ahora son las 10:01:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi