0

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

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

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

4

2 回答 2

5

如果有人感兴趣,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 驱动程序的功能(尽管它可能可以重构),但它可以工作。

于 2009-10-08T16:00:32.577 回答
0

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

例如:

$sql = "CREATE OR REPLACE FUNCTION... "
$this->db->query($sql);
于 2011-12-14T23:23:47.757 回答