Estoy tratando de usar la instrucción OUTPUT en un procedimiento almacenado para devolver el ID de una fila recién insertada. El procedimiento almacenado es:¿Qué hay de malo con la sintaxis de esta instrucción OUTPUT (SQL Server 2005)?
CREATE PROCEDURE PROC_RESTORE_REQUEST_TO_QUEUE
@cs_uri_stem varchar(900),
@cs_uri_query varchar(2500),
@date datetime,
@time datetime,
@queue_state smallint,
@process_id int,
@simulation_start_time bigint,
@num_failures smallint
AS
SET NOCOUNT ON
INSERT INTO [DD#WORK].[dbo].[ebhFifoQueue] ([cs-uri-stem],[cs-uri-query],[date],[time],[queue_state],[process_id],[simulation_start_time],[num_failures])
VALUES (@cs_uri_stem,@cs_uri_query,@date,@time,@queue_state,@process_id,@simulation_start_time,@num_failures)
OUTPUT INSERTED.id
Cuando intento compilar este procedimiento almacenado, aparece un mensaje de error:
sintaxis incorrecta cerca de 'salida'.
He intentado varias permutaciones de este código en vano (el mismo mensaje de error), incluyendo el traslado de la instrucción de salida en la misma línea que la instrucción INSERT. ¿Sabes cuál es el problema con mi sintaxis? Gracias de antemano por su ayuda,
-Eric
Creo que si solo devuelve un valor único, usar un parámetro de salida (ver mi respuesta) es un poco más fácil de consumir tanto desde T-SQL como desde un lenguaje como C#. –