繁体   English   中英

CodeIgniter和PostgreSQL-从函数返回的refcursor中检索数据

[英]CodeIgniter and PostgreSQL - Retrieving data from Function returning refcursor

我有一个PostgreSQL函数,它选择数据并通过refcursor返回数据,类似于以下声明:

CREATE OR REPLACE FUNCTION my_function()
  RETURNS refcursor AS
  ...

如何通过CodeIgniter模型从此函数检索数据? 我不能直接从函数中进行SELECT,因为它不直接返回数据。

如果有人感兴趣,请在php.net上发布以下解决方案:

protected function dbquery($query){
  pg_query("BEGIN;");
  $tr=pg_query($query);
  $r=pg_fetch_row($tr);
  $name=$r[0];
  $rs=pg_query("FETCH ALL IN \"" . $name . "\";");
  pg_query("END;");
  return $rs;
}

可以在模型中进行如下连接:

$query = $this->dbquery("SELECT * FROM my_function()");

while ($row = pg_fetch_assoc($query))
{
   array_push($result, array('my_column' => $row['my_column'] ));
}

这不是一个理想的解决方案,因为它不使用CI Postgres驱动程序的功能(尽管可以将其重构),但是它可以工作。

上面的答案没有利用CI活动记录类。 要在CI中执行此操作,只需运行一个自定义查询即可。

例如:

$sql = "CREATE OR REPLACE FUNCTION... "
$this->db->query($sql);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM