Как выполнить хранимую процедуру SQL Server из пакетного файла и получить значение параметра Output? - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть SQL Серверная хранимая процедура с выходным параметром

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".
EXE C test @outputx output;

Как выполнить серверную процедуру SQL Server из пакетного файла и получить значение выходного параметра?

Спасибо

1 Ответ

0 голосов
/ 15 февраля 2020

Вы пробовали модуль SqlServer для PowerShell? После установки этого модуля у вас есть доступ к командлету Invoke-SqlCmd. Вы можете использовать этот командлет для извлечения всего, что будет работать в SQLMgr.

$ReturnValue = invoke-sqlcmd -ServerInstance $ServerInstance -Database $Database -Query $QueryString

В этом модуле есть другие команды, включая команды для чтения и записи таблиц и представлений.

Надеюсь, это поможет вам.

...