私はストアド プロシージャを使用しており、それらを PHP から呼び出しています (Java アプリでも同じ手順を使用しています)。
今、私はこのようにしています(これはうまくいきます):
if(!($result = pg_query($connection, 'BEGIN; SELECT '.$query.'; FETCH ALL IN '.self::$cursor.';'))) return NULL;
whereは " "$query
のようなもので、カーソル名なので "ref_cursor" です (はい、ハックのように思えます...)。CALL create_account('foo', 'bar', 'etc')
$cursor
私は手順 (および準備済みステートメント) の利点について知っていますが、上記を実行する意味があるかどうか疑問に思っています。私の知る限り、プロシージャはプリコンパイルされていますが、上記のクエリはそうではありません。それで、これでパフォーマンスが向上すると信じて自分をだましているだけですか?私は自分の手順に縛られています。なぜなら、Java に手順を作成する自動生成プログラムがあるからです。この場合、PDO を使用する方が良いでしょうか? ネットで pgsql ref カーソル + pdo に関するものを検索しましたが、あまり見つかりませんでした。PDO の準備済みステートメントを使用できることはわかっていますが、それは私の手順とはうまくいきません。
-イングベ