Error en Función

05/06/2007 - 22:36 por Pablo Rodríguez | Informe spam
Hola grupo, F1, tengo el siguiente problemita:

dentro de una función tengo el siguiente código:

IF (@@ROWCOUNT = 0)
BEGIN
DECLARE @FechaHora smalldatetime
SET @FechaHora = (SELECT GETDATE())

INSERT INTO tblSesion(IdUsuario, Inicio, Cierre, Caja)
VALUES (@IdUsuario, @FechaHora, NULL, @IdCaja)

DECLARE @IdSesion int
SET @IdSesion = @@IDENTITY

INSERT INTO @RetVal -- Aquí está el error
SELECT TOP 1 *
FROM tblSesion
WHERE Id = @IdSesion
END

Y en la línea que marqué con el comentario me da el siguiente error:

Msg 443, Level 16, State 15, Procedure fnObtenerSesionCaja, Line 20
Uso no válido de operador con efectos secundarios o dependiente del tiempo
en 'INSERT' dentro de una función.

Realmente no se de que se trata el error y no encontré info al respecto
Saludos y gracias por adelantado!
 

Leer las respuestas

#1 Manuel Etcheto
05/06/2007 - 22:47 | Informe spam
Es correcto, "No se permiten las funciones no deterministas integradas en el
cuerpo de la funciones definidas por el usuario"
Eso está textual en la ayuda, "CREATE FUNCTION", " Determinismo de funciones
y efectos secundarios"

Un truco, si necesitas utilizar la fecha del servidor es crearte una vista
que haga
"select GETDATE() as ahora" y desde la función llamar a esta vista...

Suerte
Manuel


"Pablo Rodríguez" escribió en el mensaje
news:
Hola grupo, F1, tengo el siguiente problemita:

dentro de una función tengo el siguiente código:

IF (@@ROWCOUNT = 0)
BEGIN
DECLARE @FechaHora smalldatetime
SET @FechaHora = (SELECT GETDATE())

INSERT INTO tblSesion(IdUsuario, Inicio, Cierre, Caja)
VALUES (@IdUsuario, @FechaHora, NULL, @IdCaja)

DECLARE @IdSesion int
SET @IdSesion = @@IDENTITY

INSERT INTO @RetVal -- Aquí está el error
SELECT TOP 1 *
FROM tblSesion
WHERE Id = @IdSesion
END

Y en la línea que marqué con el comentario me da el siguiente error:

Msg 443, Level 16, State 15, Procedure fnObtenerSesionCaja, Line 20
Uso no válido de operador con efectos secundarios o dependiente del tiempo
en 'INSERT' dentro de una función.

Realmente no se de que se trata el error y no encontré info al
respecto
Saludos y gracias por adelantado!

Preguntas similares