Как получить возвращенное значение из хранимой процедуры с помощью командного сценария Windows? - PullRequest
1 голос
/ 11 ноября 2010

Я пишу командный скрипт, который вызывает хранимую процедуру.Эта хранимая процедура возвращает значение, которое мне понадобится позже в скрипте.Можно ли как-нибудь записать это значение в какую-то переменную?

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 22 июля 2011

В оболочке Windows CMD это можно сделать с помощью цикла FOR при вызове sqlcmd. Обычно только если запрос возвращает 1 запись.

FOR /F %%A IN ('sqlcmd <query paramters>') DO SET MYCMDVARIABLE=%%A

Его можно настроить для нескольких столбцов, но он всегда будет возвращать значения из последней строки в наборе возврата SQL.

0 голосов
/ 13 ноября 2010

Если вы имеете дело с SQL 2005 и выше, попробуйте вместо этого использовать sqlcmd .

Проверьте все возможности, которые вы можете использовать со сценариями: Страница MSDN для команды sqlcmd

0 голосов
/ 11 ноября 2010

Я использовал следующий код для вызова хранимой процедуры и получения ее возвращаемого значения.Код создает временную хранимую процедуру, которая принимает два входных параметра и возвращает их сумму через возвращаемое значение.Если ваша хранимая процедура выполняет запросы, убедитесь, что вы обрабатываете все доступные результаты с помощью sqlsrv_next_result, прежде чем пытаться получить доступ к возвращаемому значению.

Надеюсь, эта информация поможет вам.

Код ниже:

$conn = sqlsrv_connect('.\SQLExpress', array('Database'=>'Northwind'));

$sql = "CREATE PROCEDURE #ReturnParam (@p1 int, @p2 int) AS
        RETURN @p1 + @p2";
$stmt = sqlsrv_query($conn, $sql);

$sql = '{? = CALL #ReturnParam(?, ?)}';
$returnVariable = -1;
$inputVariable1 = 18;
$inputVariable2 = 24;

$params = array(array($returnVariable, SQLSRV_PARAM_OUT),
                array($inputVariable1, SQLSRV_PARAM_IN),
                array($inputVariable2, SQLSRV_PARAM_IN));

$stmt = sqlsrv_query($conn, $sql, $params);

echo "Return value: ".$returnVariable;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...