有一篇与我的问题相关的帖子涉及单个输出参数,但我找不到将其应用于具有多个输出参数的过程的方法。
我想侦察的程序概述是:
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;';