【发布时间】:2021-08-14 23:05:48
【问题描述】:
我像这样从 StoredProcB 调用 StoredProcA:
EXEC StoredProcA(@a,@b,@c)
StoredProcA 有类似这样的代码:
do some stuff...
if @a < @b
insert into TableX(ItemNo, ItemDescr, ItemCost)
values(@q, @r, @c)
if @@ERROR <> 0 begin
rollback transaction
raiserror('Insert into TableX failed', 16, 1)
return
end
do more stuff...
那么,当我从 StoredProcB 调用 StoredProcA 时,如何将错误消息返回给 StoredProcB 并为其分配一个变量?
另外,我不能以任何方式更改 StoredProcA。
我想应该是这样的:
declare @err_msg varchar(50)
EXEC @err_msg = StoredProcA(@a,@b,@c)
update MyTable Set Result = @err_msg Where Cost = @a
但我就是想不通确切的语法...
【问题讨论】:
-
给错误赋值是什么意思?同样根据documentation,您应该真正使用
THROW而不是RAISERROR。 -
这是一个存储过程,用于我正在尝试对其进行大规模更新的应用程序。所以代码不属于我,我无法更改。有关更多信息,请参阅我的编辑。
标签: sql-server tsql sql-server-2016