どのセクションで、Oracleプロシージャにset cmds(つまり、set pagesize 250など)を記述できます。
3 に答える
「オラクル」タグで同様の質問があり、この一般的な方向性が役立つと思いました。
SQL*Plus は、Oracle データベースに SQL コマンドを発行するための環境を提供するクライアント プログラムです。この環境には、クライアントでのセッション中に使用される環境とフォーマットを制御するディレクティブ (SET コマンド) もあります。PL/SQL コードは、BEGIN/END で区切られた「無名ブロック」と呼ばれるものに入力できますが、このコードは実行時に解析され、プロシージャ コードを実行している場合でもプロシージャとしてデータベースに格納されることはありません。
さらに曖昧にするために、PL/SQL コード (ストアド プロシージャ/パッケージおよび無名ブロック) には、出力を生成する DBMS_OUTPUT パッケージへの呼び出しが含まれている場合がありますが、この出力は、出力。また、DBMS_OUTPUT からの出力にはサイズ制限があり、その使用が問題になる可能性があります。
レポートまたは後処理のために Oracle データベースから出力を生成しようとしている場合は、通常、次の Oracle ベースのオプションがあります。
データベース ホスト ファイル システムにアクセスできる場合は、Oracle UTL_FILE パッケージを使用してファイルに直接書き込むことができます。PL/SQL プロシージャまたは無名ブロックで、カーソル、ループ、および出力フォーマットを自分でコーディングする必要があります。PL/SQL コードはホスト ファイルシステムに書き込むだけですが、任意のクライアントから呼び出すことができます。
出力が別の場所に必要であり、出力が DBMS_OUTPUT 行とバッファの制限内に収まる場合は、必要なものを正確に出力する PL/SQL コードを記述し、この PL/SQL を SQL*Plus で呼び出すと、フォーマットを最大限に制御できます。 SPOOL /SPOOL OFF ディレクティブを使用して、出力をクライアント ファイルシステムに保存します。
出力が上記のカテゴリに当てはまらない場合 (たとえば、500 文字幅の行で 1 億行の CSV ファイルを生成する場合)、クエリで適切な SQL 関数を使用して書式設定された結果を取得することにより、必要なものを取得できる場合があります。必要に応じて、SQL*Plus SET ディレクティブを使用して、結果セットの一部ではないすべて (見出し、改ページなど) をオフにします (ここでも SPOOL /SPOOL OFF を使用します)。
どこにもない。
これらのコマンドは sqlplus 固有のものであり、pl/sql には適用されません。
sqlplus を使用している場合は、Oracle クライアントのインストール内から sqlplus\admin\glogin.sql に設定できます。これは、sqlplus アプリを開くたびに実行されます。単一の手順には適用されません。