Задать вопрос
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
  • Вопрос задан
  • 705 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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 ...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽