这个OUTPUT语句(SQL Server 2005)的语法有什么问题?

Eri*_*son 12 sql t-sql stored-procedures sql-server-2005

我试图在存储过程中使用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
Run Code Online (Sandbox Code Playgroud)

当我尝试编译此存储过程时,收到一条错误消息:

'OUTPUT'附近的语法不正确.


我已经尝试了这些代码的几种排列无效(相同的错误消息),包括将OUTPUT语句移动到与INSERT语句相同的行.你知道我的语法有什么问题吗?在此先感谢您的帮助,

-Eric

Gab*_*ams 18

它的顺序. OUTPUT子句应该在行INSERTVALUES行之间.

只需移动你的,就像这样:

INSERT INTO [DD#WORK].[dbo].[ebhFifoQueue] ([cs-uri-stem],[cs-uri-query],[date],[time],[queue_state],[process_id],[simulation_start_time],[num_failures]) 
OUTPUT INSERTED.id
VALUES (@cs_uri_stem,@cs_uri_query,@date,@time,@queue_state,@process_id,@simulation_start_time,@num_failures) 
Run Code Online (Sandbox Code Playgroud)