вызов хранимой функции postgres из php - PullRequest
0 голосов
/ 29 марта 2010

Я первоначально разместил вопрос здесь: Как мне извлечь сохраненную функцию postgres из php

Я принял ответ, но на самом деле он не работает для меня ... Вот оригинальный вопрос:

У меня есть функция в postgres, и когда я нахожусь в приглашении pg, я просто делаю:

SELECT zp('zc',10,20,90);
FETCH ALL FROM zc;

Мне интересно, как это сделать с php?

Я думал, что смогу просто сделать:

$q = pg_query("SELECT zp('zc',10,20,90)");

Но как мне "извлечь" из этого запроса?

Я все еще не совсем уверен, как это сделать ...

Я пытался

$q = pg_query("SELECT zp('zc',10,20,90)");
$f = pg_query("FETCH ALL FROM zc");
while($row = pg_fetch_array($f)) ... 

и

while($row = pg_fetch_all($f)) ...

и

$q = pg_query("SELECT zp('zc',10,20,90);FETCH ALL FROM zc;")
while($frow = pg_fetch_array($q)) ... 

1 Ответ

1 голос
/ 29 марта 2010

Это работает:

Создайте функцию, которая возвращает CURSOR:

CREATE FUNCTION myfunc(refcursor) RETURNS SETOF refcursor AS $$
BEGIN
    OPEN $1 FOR SELECT * FROM tbl_name;
    RETURN NEXT $1;
END;
$$ LANGUAGE plpgsql;

И чем код PHP:

<code><?php
ini_set('display_errors', true);
error_reporting(E_ALL);
$con = pg_connect('host=localhost port=5432 user=**** password=**** dbname=****');

pg_query($con, "BEGIN;");
pg_query($con, "SELECT * FROM myfunc('a');");

$result = pg_query($con, "FETCH ALL FROM a;");

echo '<pre>';
print_r(pg_fetch_all($result));
echo '
';pg_query ($ con, "COMMIT;");?>

Если у вас есть проблемы, какие у вас проблемы?Есть ошибки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...