Я использую хранимые процедуры и вызываю их из PHP (я использую те же процедуры в приложении Java).
Сейчас я делаю это так (что работает):
if(!($result = pg_query($connection, 'BEGIN; SELECT '.$query.'; FETCH ALL IN '.self::$cursor.';'))) return NULL;
, где $query
- это что-то вроде "CALL create_account('foo', 'bar', 'etc')
"
и $cursor
это просто "ref_cursor", так как это имя курсора (и да, я знаю это
похоже на взлом ...).
Я знаю о преимуществах процедур (и подготовленных утверждений), и мне интересно, есть ли смысл выполнять вышеизложенное. Насколько я знаю, процедура предварительно скомпилирована, но запрос выше - нет. Так что я просто обманываю себя, полагая, что в этом я получу некоторое повышение производительности? Я вроде привязан к своим процедурам, потому что у меня есть автоматический генератор на Java, который пишет их для меня. В этом случае лучше использовать PDO? Я искал в сети что-то на pgsql ref cursors + pdo, но я не нашел много.
Я знаю, что мог бы просто использовать подготовленные заявления PDO, но это не совпало бы с моими процедурами.
-Yngve