具有多个输出参数的tsqlt spyProcedure



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

我想侦察的程序概述是:

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}

我对它做了很多修改,无法想出一个成功的语法。我错过了什么?谢谢

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;';

最新更新