You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

T-SQL中嵌套执行两个存储过程代码运行异常如何解决

问题排查

你的代码无法正常运行是两处语法/用法错误导致的:

  • 调用第一个存储过程sp_TLKARSILIK时,参数列表漏写了逗号,@curr_unit和后面的输出参数直接连写,属于基础语法错误。
  • 存储过程的输出参数没有显式加OUTPUT标记:T-SQL里存储过程参数默认是输入方向,如果你要把存储过程内部计算得到的值回传给外层声明的变量,必须在调用时给对应参数加上OUTPUT(可简写为OUT)关键字,否则外层变量拿不到内部的赋值结果,后续传给第二个存储过程的@currency_val会是NULL值。
修正后的可运行代码
DECLARE @currency_val decimal(18, 2);
DECLARE @first_price decimal(18, 2) = 80;
DECLARE @curr_unit nvarchar(50) = 'eur';

-- 执行第一个存储过程,获取计算完成的货币值
EXEC sp_TLKARSILIK @first_price, @curr_unit, @currency_val OUTPUT;

-- 将第一个存储过程返回的结果传入第二个存储过程执行
EXEC sp_DOVIZKARSILIK @currency_val, 'eur';

补充说明:如果按上述写法修改后@currency_val依然取不到值,需要检查sp_TLKARSILIK的存储过程定义:确认该过程的第三个参数本身被定义为OUTPUT方向,且过程内部存在对该参数的赋值逻辑(例如SET @currency_val = 对应计算结果),否则外层变量无法拿到返回值。

内容的提问来源于stack exchange,提问作者RCeyda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 20:48:21