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