【问题标题】:tsqlt spyProcedure with multiple output parameters具有多个输出参数的 tsqlt spyProcedure
【发布时间】:2025-11-23 23:10:02
【问题描述】:

我的问题有一个相关的帖子处理单个输出参数,但我找不到将其应用于具有多个输出参数的过程的方法。

我想窥探的过程概述是:

ALTER PROCEDURE [dbo].[wms_whse_check_serialNumber]
  @Command Json
, @operWarningMessage_notExists exception OUTPUT
, @operWarningMessage_notInInventory exception OUTPUT
<...>

此代码有效:

EXEC tSQLt.SpyProcedure @ProcedureName = N'dbo.wms_whse_check_serialNumber', 
  @CommandToExecute = N'SET @operWarningMessage_notExists = NULL;';   

但是,我想指定两个输出参数。如果我尝试:

EXEC tSQLt.SpyProcedure @ProcedureName = N'dbo.wms_whse_check_serialNumber', 
  @CommandToExecute = N'SET @operWarningMessage_notExists = NULL, @operWarningMessage_notInInventory = NULL;';

我得到:(Error) Incorrect syntax near ','.[15,1]{wms_whse_check_serialNumber,1}

我已经对它进行了相当多的修改,但无法想出一个成功的语法。我错过了什么?谢谢!

【问题讨论】:

  • 感谢塞巴斯蒂安!非常感谢 tsqlt 以及您对它的支持!

标签: parameters output tsqlt


【解决方案1】:

SET 替换为SELECT ,如下所示:

     EXEC tSQLt.SpyProcedure @ProcedureName = N'dbo.wms_whse_check_serialNumber', 
       @CommandToExecute = N'SELECT @operWarningMessage_notExists = NULL, @operWarningMessage_notInInventory = NULL;';

解释

SET 命令一次只能设置一个变量。您可以使用多个SET 语句,或者如上所示,使用SELECT 代替一次分配多个变量。

旁注

没有什么可以阻止您在上面的 @CommandToExecute 参数中使用多个语句,因此这也是一个可行的解决方案:

     EXEC tSQLt.SpyProcedure @ProcedureName = N'dbo.wms_whse_check_serialNumber', 
       @CommandToExecute = N'SET @operWarningMessage_notExists = NULL; SET @operWarningMessage_notInInventory = NULL;';

【讨论】: