Вызов хранимой процедуры mssql с использованием драйверов pdo sqlsrv с несколькими запросами внутри процедуры - PullRequest
0 голосов
/ 11 декабря 2018

Я сталкиваюсь с проблемой при вызове хранимой процедуры с использованием драйверов sqlsrv в laravel.Внутри процедуры есть несколько запросов с комбинацией выбора и вставки.Я не могу поделиться кодом здесь как вопрос конфиденциальности.

Так что любой может поделиться кодом, который может работать с laravel, чтобы вызвать процедуру mssql с несколькими наборами строк результатов.

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

1 Ответ

0 голосов
/ 14 декабря 2018

MS SQL Server поддерживает хранимые процедуры, которые могут возвращать более одного набора результатов.С помощью PHP и PDO вы можете получить эти наборы результатов с помощью метода PDOStatement :: nextRowset () .Важно знать, что если у вас есть выходные параметры в вашей хранимой процедуре, вам нужно извлечь все наборы результатов, чтобы получить выходные значения.

Если Laravel не поддерживает nextRowset(), вы можете попытаться получитьбазовый экземпляр PDO, используя метод getPdo() для экземпляра соединения, и используйте этот экземпляр для выполнения оператора:

<?php

...
$pdo = DB::connection()->getPdo();
try {
    $sql = "{CALL usp_TestProcedure(?)}";
    $param = 'ParamValue';
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(1, $param);
    $stmt->execute();
    do {
       while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
          print_r($row, true); 
          echo '<br>';
       }
    } while ($stmt->nextRowset());  
} catch( PDOException $e ) {
    die( "Error executing query" );
}
...

?>
...