Próbuję użyć instrukcji OUTPUT w procedurze przechowywanej, aby zwrócić identyfikator nowo wstawionego wiersza. Procedura składowana jest:Co jest nie tak ze składnią instrukcji 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
Kiedy próbuję skompilować tej procedury przechowywanej, otrzymuję komunikat o błędzie:
Niepoprawna składnia w pobliżu „wyjście”.
Próbowałem kilka permutacji tego kodu bezskutecznie (sam komunikat o błędzie), w tym przeniesienie oświadczenie OUTPUT na tej samej linii co INSERT. Czy wiesz, jaki jest problem z moją składnią? Dzięki z góry za pomoc,
-Eric
Myślę, że jeśli zwracasz tylko jedną wartość, to za pomocą parametru ouput (zobacz moją odpowiedź) jest nieco łatwiej zużywać zarówno z T-SQL lub języka, takiego jak C#. –