从 Laravel 4 中的 MSSQL 存储过程读取多个结果集

Posted

技术标签:

【中文标题】从 Laravel 4 中的 MSSQL 存储过程读取多个结果集【英文标题】:Reading multiple result set from MSSQL stored procedure in Laravel 4 【发布时间】:2014-04-23 19:09:56 【问题描述】:

我正在从 MSSQL Server 2012 中的存储过程中获取数据(使用 SQLSRV 驱动程序),它返回多个结果集,但我只能使用以下代码读取第一个结果集

$res = DB::select('EXEC Procedure_Name ?,?,?,?',
                    array(
                            $Prama1,
                            $Prama2,
                            $Prama3, 
                            $Prama4
                        ));

这会返回四个结果集,但是当我打印 $res 时,我只得到了第一个结果集,如何读取其他结果集?任何提示都会有很大帮助。

更新:

在***上找到了一些线索并编译了这个解决方案,不知道它是否是实现这一目标的优化方法。如果您有更好的方法,请分享。

    $stmt = $db->prepare("EXEC Procedure_Name ?,?,?,?");

    $type = "Type";
    $fromDate = "01-Mar-2014";
    $toDate = "15-Mar-2014";
    $adminId = 0;
    $stmt->bindParam(1, $type);
    $stmt->bindParam(2 , $fromDate);
    $stmt->bindParam(3 , $toDate);
    $stmt->bindParam(4 , $adminId);
    $stmt->execute();

        $search = array();
    do 
         $search = $stmt->fetchAll();   

         print '<pre>'; print_r($search); 
     while ($stmt->nextRowset());

【问题讨论】:

有什么理由不使用 Eloquent 和 QueryBuilder? 【参考方案1】:

我不记得了,但如果可以的话,尝试使用:

设置编号

在您的存储过程声明中。

我认为你可以像你一样使用默认的 select() 函数:

DB::select('EXEC Procedure_Name ?,?', $bindings)

并检索结果数组

【讨论】:

以上是关于从 Laravel 4 中的 MSSQL 存储过程读取多个结果集的主要内容,如果未能解决你的问题,请参考以下文章

如何从 java 调用 MSSQL 存储过程

如何从 Java 调用 MSSQL 加密的存储过程?

mssql 存储过程调用另一个存储过程中的结果的方法分享

mssql 存储过程调用另一个存储过程中的结果的方法分享

如何从 SQL Server 2000 调用 MySQL 存储过程?

PHP 将 NULL 转换为 MSSQL 存储过程中的空字符串