我正在使用存储过程并从 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