微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从PHP Codeigniter调用存储过程

寻找了一个星期,但没有找到一些我可以用来执行存储过程的内容.
场景:

我已在探查器窗口中复制了在sql Server 2014管理上运行的代码.

我打开sql Studio和Heidisql并运行查询,它运行正常,并向我返回了预期的结果.

当我尝试粘贴和修改内容以获得与在sql客户端上相同的结果时,它没有像在sql客户端中那样运行.
我该如何实现?

例如:在我的sql中,我必须声明要运行存储过程的128个变量,但为简单起见,我只记下一个变量,要记住sintaxe与一个或128个变量相同吗?

declare @var01 varchar(1000) set @var01='.$var01.'

EXEC
stored_procedure_y
@var01 output

SELECT
@var01 AS any_value

我尝试了许多方法来执行sql命令,但均未成功.
我尝试运行的一些示例:

>最后

$declare_vars = 'declare @var01 varchar(1000) set @var01='.$var01.';
$exec_sp = 'EXEC operacao_sitef @var01 output;
$select_retorno = 'SELECT @var01 AS any_value;

$queryDeclare = $this->db->query($declare_vars);

$queryExec = $this->db->query($exec_sp);
    $queryRetorno = $this->db->query($select_retorno);

    return $queryRetorno;

不工作.
>其他

$query = $this->db->query('
declare @var01 varchar(1000) set @var01='.$var01.'
EXEC
operacao_sitef
@var01 output
SELECT
@var01 AS any_value
 ');
 return $query;

也没有用.
任何帮助,将不胜感激.我是SP的新手,不知道如何使用codeigniter调用方法并收集结果以完成操作.

解决方法:

我这样解决了.

我正在使用PDO驱动程序.

simple_query方法返回PDOStatement对象和一个重要点SET NOCOUNT ON

class Pump_Model extends CI_Model
{
    public function getPumpStatisticSpById($pumpId)
    {
        $result = $this->db->simple_query("SET NOCOUNT ON 
                            DECLARE @return_value int
                            EXEC    @return_value = [dbo].[spPumpStatistics]
                                    @PumpID = $pumpId")->fetch(PDO::FETCH_OBJ);
        return $result;
    }

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐