Вызов хранимой процедуры mssql с использованием драйверов pdo sqlsrv с несколькими запросами внутри процедуры

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

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

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

1 ответ

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" );
}
...

?>
Другие вопросы по тегам