我尝试通过批处理文件从sqlcmd执行的存储过程中获取输出参数。详细说明:
我正在SQL Server中执行以下存储过程:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[uspCalibFail]
@pStation_Name NVARCHAR(50),
@responseMessage NVARCHAR(250) = '' OUTPUT
AS
BEGIN
SET NOCOUNT ON
SELECT [Station], [TLI], [Description]
FROM CalibData
WHERE Waiver_expiration_dat < GETDATE()
IF EXISTS (SELECT TOP 1 SELECT [Station], [TLI], [Description]
FROM CalibData
WHERE Waiver_expiration_dat < GETDATE()
BEGIN
SET @responseMessage = 'Station devices overdue for calibration'
END
ELSE
SET @responseMessage='Station OK'
END
GO
我正在使用批处理文件来执行存储过程,我使用批处理文件参数并将其作为存储过程输入输入
sqlcmd -S NEMICQS-DB64 -U ***** -P ***** -Q "exec [NewDB].[dbo].[uspCalibData] @pStation_Name=$(station)" /v station="%~1"
因为我得到了select查询作为表(这很棒) - 但我没有得到输出参数@responseMessage值。我怎么能得到它?
答案 0 :(得分:1)
我使用批处理文件来执行存储过程,我使用了 batchfile参数并将其作为存储过程输入输入。
要在T-SQL脚本中捕获存储过程输出参数,您需要声明一个局部变量并将其指定为存储过程输出参数值。未经测试的示例代码段:
-Q "DECLARE @vresponse_message nvarchar(250); exec [NewDB].[dbo].[uspCalibData] @pStation_Name=$(station),@presponse_message=@vresponse_message OUTPUT;SELECT @vresponse_message AS vresponse_message;" /v station="%~1"