グローバル一時テーブルにデータを設定するストアド プロシージャがあります。
リーリーストアド プロシージャを実行して、一時テーブルに追加された行を選択したいと考えています。
リーリーこのコードは行を取得しません。そこで、データベースへの同じラウンドトリップで選択内容を入れることにしました:
リーリーこれによりエラーが発生します:
リーリーBEGIN ... END; の中に SELECT を入れると、次のエラーが発生します:
リーリー一時テーブルにデータを設定し、そこから選択するストアド プロシージャを PHP で実行するにはどうすればよいですか?
SQL Developer では動作しますが、PHP では動作しません。
###使用:### ああああP粉4329300812023-09-10 12:29:41
最初の問題は、oci_execute()
がデフォルトでコミットするため、POPULATETEMPTABLE
を呼び出して挿入された行は、ON COMMIT DELETE ROWS;
で定義された行によってクリアされることです。 。
次のように変更してこれを修正します:
リーリーPL/SQL ブロックに SELECT を入れる場合の 2 番目の問題は、これが無効な PL/SQL であるためです。参照カーソルまたは暗黙的な結果セットを使用します。 OCI8 ドキュメントまたは Underground PHP および Oracle マニュアル
を参照してください。