【发布时间】:2020-05-30 16:29:51
【问题描述】:
我有这个带有输出参数的 SQL Server 存储过程
PROCEDURE [dbo].[test]
@outputx int output
AS
SELECT @outputx = 123
当我在 SQL Server Management Studio 中运行它时,它返回 123:
DECLARE @outputx int
EXEC test @outputx output
SELECT @outputx --> returns 123
我需要从批处理文件或 PowerShell 中调用此存储过程。
我在.BAT 文件中使用此代码(我使用OSQL):
SET tempfile = "C:\myFolder\tempfile.txt"
SET outputx = 0
SET Cmd = EXEC test @outputx output;
SET Cmd = "%Cmd%"
OSQL -S myDBServer -d myDbName -E -e -p -b -Q %Cmd% >%tempfile%
当我检查tempfile.txt 时,它说:
消息 137,级别 15,状态 2,服务器 myDBServer,第 1 行
必须声明标量变量“@outputx”。
EXEC 测试@outputx 输出;
如何从批处理文件执行 SQL Server 存储过程并获取输出参数值?
谢谢
【问题讨论】:
-
cmd.exe 的正确语法,即您的批处理文件,应该是
SET "tempfile=C:\myFolder\tempfile.txt"、SET "outputx=0"、SET "cmnd=EXEC test @outputx output;"和OSQL -S myDBServer -d myDbName -E -e -p -b -Q "%cmnd%" >"%tempfile%"。 请注意,这不是您问题的答案,只是您作为自己的批处理文件代码发布的内容的正确语法。
标签: sql-server powershell batch-file cmd sql-server-2012