SQL Server - Problema con Cursores y Funciones deterministicas

 
Vista:

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con Cursores y Funciones deterministic

Publicado por Isaias (3308 intervenciones) el 24/07/2007 01:54:05
Primero.- Debes saber que los cursores degradan la respuesta del servidor, ya que estos se crean en Memoria
Segundo.- Porque utilizar un cursor, si bien puedes hacer el UPDATE directamente.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar