Задать вопрос
kissarat
@kissarat
Node.js

Как вызвать функцию PostreSQL в PHP используя PDO?

Есть функция https://gist.github.com/kissarat/cb5df1c577c5e5da2d05
Я ее вызываю используя $pdo->exec('SELECT descend(4)'); или $pdo->query('SELECT descend(4)')->fetch(); и получаю ошибку
PHP Warning: Uncaught exception 'PDOException' with message 'SQLSTATE[42601]: Syntax error: 7 ERROR: query has no destination for result data
HINT: If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT: PL/pgSQL function descend(integer) line 11 at SQL statement' in php shell code:1
Stack trace:
#0 php shell code(1): PDO->query('SELECT descend(...')

Прикол в том, что до того, как я внес в эту функцию изменения (вместо _type.degree было 4) вызов работал и возвращал значения. Вот оригинальный код, делающий вызов
$parent_id = SQL::queryCell('SELECT descend(:root_id)', [
            ':root_id' => $this->id
        ]);

где класc SQL https://gist.github.com/kissarat/9117b654fc66877441d7
  • Вопрос задан
  • 693 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@kshvakov
SELECT root_id, level, count(*) as count FROM matrix GROUP BY root_id, level
    HAVING count(*) < power(_type.degree, level);

Он никуда и ничего не возвращает, о чем и говорит постгрес, и просит вызывать его как PERFORM если уж оно вам надо, видимо нужен INTO в _count, _level, etc ...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы