在laravel中使用sqlsrv驱动程序调用存储过程时,我遇到了问题。程序内部有多个查询,这些查询具有选择和插入的组合。我无法在此处共享代码作为其隐私问题。
所以任何人都可以共享可以与laravel一起使用的代码,以调用具有多个结果行集的mssql过程。
提前谢谢!
答案 0 :(得分:0)
MS SQL Server支持可以返回多个结果集的存储过程。 使用PHP和PDO,您可以使用PDOStatement::nextRowset()方法检索这些结果集。 重要的是要知道,如果存储过程中有输出参数,则需要获取所有结果集以获取输出值。
如果Laravel不支持nextRowset()
,则可以尝试在连接实例上使用getPdo()
方法获取基础PDO实例,并将该实例用于语句执行:
<?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" );
}
...
?>