CodeIgniterのとPostgreSQL - 参照カーソルを返す関数からデータを取得
-
20-09-2019 - |
質問
私は、データを選択し、REFCURSORを介してそれを返すPostgreSQLの機能を有し、次の宣言に似た:
CREATE OR REPLACE FUNCTION my_function()
RETURNS refcursor AS
...
どのように私はCodeIgniterのモデルを経て、この関数からデータを取得するのですか?それが直接データを返さないように私はちょうど関数から直接選択することはできません。
解決
の場合には、誰もが興味を持っている、 php.net <上のポスト/ A>は、以下の溶液を得ます:
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);
所属していません StackOverflow