Call plsql script within another plsql script

実行したいPLSQLスクリプトでいっぱいのディレクトリがあります。問題は、そのディレクトリの内容が動的であり、それらのスクリプトの名前を知る方法がないことです。

そのディレクトリ内のすべてのSQLファイルを実行するためにいくつかのものを作成する必要がありますが、ファイル名が実行時まで不明なスクリプトを呼び出す方法をPLSQLで見つけることができません。

.sqlファイルの内容をVARCHAR2にロードしてから、

EXECUTE IMMEDIATE l_Script_Content;

しかし、何らかの理由でこれが機能しない場合は、フルパスの代わりにvarchar2を突然@コマンドが受け入れるなど、より簡単な方法が必要だと思います。

誰かが私を正しい方向に向けることができますか?たぶんJavaからスクリプトを実行していますか?

ありがとう!sqlオラクルplsqlsqlplusシェアこの質問を改善するフォローする2010年11月26日16:36に 尋ねたim8bit5671ゴールドバッジ1個44つのシルバーバッジ1616個のブロンズバッジコメントを追加

2つの答え

アクティブ最古投票13

PL / SQLはその仕事に適したツールではありません。最も簡単な方法は、ある種のシェルスクリプト(BASHなど)を使用してSQLファイルを作成し、それを実行することです。このような:


bash> EXPORT IFS="
"
bash> for FILE in `ls -1 *.pls``;  # single backtick here -_-
  do echo "start "$FILE >> run.sql;
done;

sqlplus> start run.sqlシェアこの答えを改善するフォローする2010年11月26日16:46に 回答ミラノ2,24822つのゴールドバッジ2121個のシルバーバッジ3535個のブロンズバッジ

  • 1ミラノに感謝します。その通りです。PLSQLからそれを実行したい理由すらわかりません。やってみます! –  im8bit 2010年 11月26日18:15

コメントを追加1

このインストールスクリプトを同じフォルダに保存します。たとえば、すべてのplsqlファイルが存在する「current_folder_location /」を.sql形式で保存します。
これは、unnixbox、sqlplus、sqlDeveloperでトリガーできます。

set define off;
spool install_scripts_logs.log;

Prompt plsql_file_1.sql
@current_folder_location/plsql_file_1.sql
show errors;

Prompt plsql_file_2.sql
@current_folder_location/plsql_file_2.sql
show errors;

Prompt plsql_file_1.sql
@current_folder_location/plsql_file_2.sql
show errors;

spool off;

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA