使用Codeigniter执行存储过程中的问题

时间:2019-06-29 20:29:46

标签: codeigniter stored-procedures sql-server-2014 sqlsrv

我正在使用Codeigniter版本3.1.10并将SQLSRV用作数据库驱动程序

我一直在尝试使用Codeigniter执行存储过程 我的存储过程查询为

    $sp = "SP_AffniGetReports  @startdate=?,@enddate=?,@interval=?,@device_id=?,@limit=?,@offset=?";
    $params = array($from_date,$to_date,$rpt_time_interval,$meter_id,$offset,$limit);
    $result = $this->db->query($sp,$params,false);
    $result = $this -> db -> get();

遇到此错误

[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Must specify table to select from.

SELECT *

在检查了上述错误之后,我打印了Codeigniter生成的存储过程查询,并且得到了

SP_AffniGetReports @startdate='2019-06-21 12:00:01',@enddate='2019-06-27 11:05:59',@interval='60',@device_id='101',@limit=0,@offset='30'

作为编译查询!

在过去2天中,我尝试了所有修改,例如在查询和引用中使用“ EXEC”,“ CALL”。但是我无法执行存储过程。

现在,我尝试使用SQLSRV(已执行存储过程)使用普通PHP脚本运行相同的查询。我的PHP脚本是

$procedure_params = array('2019-06-10 00:00:01','2019-06-27 00:00:59','1','101','0','30');
$sql = "EXEC SP_AffniGetReports @startdate=?,@enddate=?,@interval=?,@device_id=?,@limit=?,@offset=?";
$stmt = sqlsrv_prepare($conn, $sql, $procedure_params);

我得到了结果!但是我找不到Codeigniter的存储过程的问题

1 个答案:

答案 0 :(得分:0)

找到了为什么这个问题发生我的语法错误。代码应该是

$query = $this->db->query($sp,$params,false);
$result = $query->result();
  

通过使用$ result = $ this-> db-> get(); Codeigniter尝试与存储过程一起创建新查询。这是造成我问题的原因。