Sql server SQL Server存储过程参数输出
我有一个存储过程,为了解决这个问题,我已经对它进行了大幅缩减,但本质上,我需要帮助解决的问题是这个 如果表Sql server SQL Server存储过程参数输出,sql-server,stored-procedures,Sql Server,Stored Procedures,我有一个存储过程,为了解决这个问题,我已经对它进行了大幅缩减,但本质上,我需要帮助解决的问题是这个 如果表xyz中的一行被更新,我需要将ID追加到彼此,并输出回调用应用程序。更新按预期工作,问题在于我构建输出的方式@IPV\u ID\u Found(请参阅代码底部的注释部分) 请参见更改: -- this does not work for multiple IDs SELECT @IPV_ID_Found = @IPV_ID_Found + ',' + (CAST(@IPV_ID AS
xyz
中的一行被更新,我需要将ID追加到彼此,并输出回调用应用程序。更新按预期工作,问题在于我构建输出的方式@IPV\u ID\u Found
(请参阅代码底部的注释部分)
请参见更改:
-- this does not work for multiple IDs
SELECT @IPV_ID_Found = @IPV_ID_Found + ',' + (CAST(@IPV_ID AS VARCHAR(500)))
然后您将得到一个串联的值列表,如1,2,3,4,5
但是如果需要返回记录集,则不需要输出参数,而是使用表变量:
declare @IPV_ID_Found table(Item varchar(500))
IF (@IPV_Status ='closed')
BEGIN
UPDATE TEST_TBL
SET
Status = 'xyz',
WHERE
ID = @IPV_ID
-- this works for one ID
insert @IPV_ID_Found
VALUES (CAST(@IPV_ID AS VARCHAR(500)))
-- this does not work for multiple IDs
INSERT @IPV_ID_Found
VALUES (CAST(@IPV_ID AS VARCHAR(500)))
SELECT Item FROM @IPV_ID_Found
END
很抱歉格式化了,我把代码放在了代码块中,但没有花……嗯。。。您正在用
ID=@IPV\u ID
更新您的表-这怎么会导致多个ID被报告回来??你想报告什么ID?没有多个ID:如果你有UPDATE。。。ID=@IPV_ID
该=
表示一行。因此,请给出更好的代码,示例dataHi Marc,我正在将一个逗号delimetered的id varchar传递给存储的进程,提取将它们存储在临时表中的id,然后使用临时表的大小作为循环来进行更新。更新很好,问题在于我构建输出的方式(我认为)。好人!!!我使用了记录集,忘记了输出参数cheers。
declare @IPV_ID_Found table(Item varchar(500))
IF (@IPV_Status ='closed')
BEGIN
UPDATE TEST_TBL
SET
Status = 'xyz',
WHERE
ID = @IPV_ID
-- this works for one ID
insert @IPV_ID_Found
VALUES (CAST(@IPV_ID AS VARCHAR(500)))
-- this does not work for multiple IDs
INSERT @IPV_ID_Found
VALUES (CAST(@IPV_ID AS VARCHAR(500)))
SELECT Item FROM @IPV_ID_Found
END