SQL Server - Problema Funciones Deterministicas

 
Vista:

Problema Funciones Deterministicas

Publicado por Manuel (2 intervenciones) el 16/08/2007 01:02:59
Deseo crear la siguiente función, pues es necesario para el funcionamiento de un sistema...

CREATE FUNCTION GIS_GENID_BAK (@VTABLENAME VARCHAR(20))
RETURNS INT
BEGIN

DECLARE @NEXT_ID INT

SELECT @NEXT_ID = MAKLASTID FROM GENMAKEID WHERE MAKTBLNAME = @VTABLENAME

IF (@NEXT_ID = 0)
BEGIN
SET @NEXT_ID = 1 ;
INSERT INTO GENMAKEID ( MAKTBLNAME , MAKLASTID ) VALUES(@VTABLENAME , @NEXT_ID )
END
ELSE
BEGIN
SET @NEXT_ID = @NEXT_ID + 1
UPDATE GENMAKEID SET MAKLASTID = @NEXT_ID WHERE MAKTBLNAME = @VTABLENAME
END

RETURN @NEXT_ID
END

pero me sale el siguiente error

Servidor: mensaje 443, nivel 16, estado 15, procedimiento GIS_GENID_BAK, línea 12
Uso no válido de operador con efectos secundarios o dependiente del tiempo en 'INSERT' dentro de una función.
Servidor: mensaje 443, nivel 16, estado 1, procedimiento GIS_GENID_BAK, línea 17
Uso no válido de operador con efectos secundarios o dependiente del tiempo en 'UPDATE' dentro de una función.

Alguien q tenga alguna idea de como solucionarlo, se lo agracederia mucho..
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 Funciones Deterministicas

Publicado por Isaias (3308 intervenciones) el 16/08/2007 18:20:57
¿Porque una FUNCION DE USUARIO y no un STORE PROCEDURE?
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

RE:Problema Funciones Deterministicas

Publicado por Christian (1 intervención) el 15/07/2015 07:48:10
Yo quiero hacer una función que me devuelva un resultado de una tabla y a la vez que haga un update en otra tabla, quiero simular una secuencia de Oracle dado que no me interesa usar IDENTITY porque necesito múltiples secuencias (tengo una sola tabla de secuencias con el NOMBRE y VALOR) pero necesito obtener el nuevo valor incrementado DENTRO DE UN SELECT y no con un SP, ya que tendría que usar variables y demás código T-SQL dentro de C# que es donde quiero mandarla a llamar. No sé si me doy a entender.
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