通过批处理文件使用存储过程的 SQLCMD - 获取输出参数
SQLCMD with Stored Procedure via batch file - get an output parameter
我尝试通过批处理文件从使用 sqlcmd 执行的存储过程中获取输出参数。详情:
我正在 SQL 服务器中执行以下存储过程:
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 查询作为 table(这很好)- 但我没有得到输出参数 @responseMessage 值。我怎样才能得到它?
I'm using a batch file to execute the stored procedure, I use a
batchfile parameter and enter it as the stored procedure input.
要在 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"
我尝试通过批处理文件从使用 sqlcmd 执行的存储过程中获取输出参数。详情:
我正在 SQL 服务器中执行以下存储过程:
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 查询作为 table(这很好)- 但我没有得到输出参数 @responseMessage 值。我怎样才能得到它?
I'm using a batch file to execute the stored procedure, I use a batchfile parameter and enter it as the stored procedure input.
要在 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"