Problema con Cursores y Funciones deterministicas
Publicado por Manuel (2 intervenciones) el 24/07/2007 00:39:17
Se me presenta el siguiente problema al crear una funcion
CREATE FUNCTION GIS_GENIDINTER_SICAF()
RETURNS INT
AS
BEGIN
DECLARE @SQLCODE INT
DECLARE @NEXT_ID INT
SET @SQLCODE = 0
-- DEFINIMOS EL CURSOR PARA EL SELECT
DECLARE C1 CURSOR FOR
SELECT NUMULT FROM LIBEPZDTA..NUMFOR WHERE NUMCODINT = 5 AND NUMSUC = 1
OPEN C1
FETCH NEXT FROM C1
INTO @NEXT_ID
IF (@@fetch_status = 0)
BEGIN
SET @NEXT_ID = -1
END
ELSE
BEGIN
SET @NEXT_ID = @NEXT_ID + 1
UPDATE LIBEPZDTA..NUMFOR SET NUMULT = @NEXT_ID
WHERE NUMCODINT = 5 AND NUMSUC = 1
END
CLOSE C1
DEALLOCATE C1
RETURN @NEXT_ID
END
El error es el siguiente :
Servidor: mensaje 443, nivel 16, estado 15, procedimiento GIS_GENIDINTER_SICAF, línea 25
Uso no válido de operador con efectos secundarios o dependiente del tiempo en 'UPDATE' dentro de una función.
Si alguien tuviera idea se lo agradeceria mucho..
Gracias
CREATE FUNCTION GIS_GENIDINTER_SICAF()
RETURNS INT
AS
BEGIN
DECLARE @SQLCODE INT
DECLARE @NEXT_ID INT
SET @SQLCODE = 0
-- DEFINIMOS EL CURSOR PARA EL SELECT
DECLARE C1 CURSOR FOR
SELECT NUMULT FROM LIBEPZDTA..NUMFOR WHERE NUMCODINT = 5 AND NUMSUC = 1
OPEN C1
FETCH NEXT FROM C1
INTO @NEXT_ID
IF (@@fetch_status = 0)
BEGIN
SET @NEXT_ID = -1
END
ELSE
BEGIN
SET @NEXT_ID = @NEXT_ID + 1
UPDATE LIBEPZDTA..NUMFOR SET NUMULT = @NEXT_ID
WHERE NUMCODINT = 5 AND NUMSUC = 1
END
CLOSE C1
DEALLOCATE C1
RETURN @NEXT_ID
END
El error es el siguiente :
Servidor: mensaje 443, nivel 16, estado 15, procedimiento GIS_GENIDINTER_SICAF, línea 25
Uso no válido de operador con efectos secundarios o dependiente del tiempo en 'UPDATE' dentro de una función.
Si alguien tuviera idea se lo agradeceria mucho..
Gracias
Valora esta pregunta


0