【发布时间】:2011-04-30 08:32:22
【问题描述】:
我试图在存储过程中使用 OUTPUT 语句来返回新插入行的 ID。存储过程是:
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
当我尝试编译这个存储过程时,我收到一条错误消息:
“OUTPUT”附近的语法不正确。
我尝试了该代码的几种排列都无济于事(相同的错误消息),包括将 OUTPUT 语句与 INSERT 语句移动到同一行。你知道我的语法有什么问题吗?提前感谢您的帮助,
-埃里克
【问题讨论】:
-
我认为,如果您只返回一个值,那么使用输出参数(请参阅我的答案)会更容易从 T-SQL 或 C# 等语言中使用。
标签: sql sql-server-2005 tsql stored-procedures