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!

Preguntas similare

Leer las respuestas

#6 Manuel Etcheto
07/06/2007 - 20:21 | Informe spam
Pablo: la clave está en lo que te dice Miguel. Eso es para un SP, no una
función...

Una función es para devolver algo (tabla o expresión) en función de algo (lo
que sea) que se pasa como parámetros, no para ejecutar tareas.

El SP puede ejecutar todo lo que necesites y, Además, devolverte conjuntos
de datos y/o parámetros output.

Suerte
Manuel


"Pablo Rodríguez" escribió en el mensaje
news:
Mostrar la cita
#7 Pablo Rodríguez
07/06/2007 - 20:59 | Informe spam
Gracias por la explicación, realmente no sabía la diferencia entre
procedimiento y función en SQL.
Lo voy a pasar todo a un proc. y cualquier problema posteo acá.

Saludos!

______________
"Manuel Etcheto" escribió en el mensaje
news:
Mostrar la cita
#8 Miguel Egea
08/06/2007 - 11:56 | Informe spam
Aquí estaremos para ayudar en lo que podamos :)

Saludos
"Pablo Rodríguez" wrote in message
news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida