検索

ホームページ  >  に質問  >  本文

一時テーブルにデータを設定し、その一時テーブルから選択するストアド プロシージャを実行します。

グローバル一時テーブルにデータを設定するストアド プロシージャがあります。

リーリー

ストアド プロシージャを実行して、一時テーブルに追加された行を選択したいと考えています。

リーリー

このコードは行を取得しません。そこで、データベースへの同じラウンドトリップで選択内容を入れることにしました:

リーリー

これによりエラーが発生します:

リーリー

BEGIN ... END; の中に SELECT を入れると、次のエラーが発生します:

リーリー

一時テーブルにデータを設定し、そこから選択するストアド プロシージャを PHP で実行するにはどうすればよいですか?

SQL Developer では動作しますが、PHP では動作しません。

###使用:### ああああ

P粉551084295P粉551084295447日前463

全員に返信(1)返信します

  • P粉432930081

    P粉4329300812023-09-10 12:29:41

    最初の問題は、oci_execute() がデフォルトでコミットするため、POPULATETEMPTABLE を呼び出して挿入された行は、ON COMMIT DELETE ROWS; で定義された行によってクリアされることです。 。

    次のように変更してこれを修正します:

    リーリー

    PL/SQL ブロックに SELECT を入れる場合の 2 番目の問題は、これが無効な PL/SQL であるためです。参照カーソルまたは暗黙的な結果セットを使用します。 OCI8 ドキュメントまたは Underground PHP および Oracle マニュアル

    を参照してください。

    返事
    0
  • キャンセル返事