こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PL/SQLをWindowsのBATファイルで実行するには

いつも参考にさせていただいております。
表題のとおり、WindowsServer2003上でBATファイルを起動したいのですが、うまくいきません。

BATファイルの中身
sqlplus USER_A/USER_A @DB_A @SQLPAT
sqlplus USER_B/USER_B @DB_B @SQLPAT

SQLPATファイルは、大体以下の感じで、2つのスキーマーで同じPL/SQLを実行します。

Declare

カーソルループ
更新


END;

タスクにBATファイルを登録し実行すると
最初のPL/SQLは実行されますが、次のUSER_Bが実行されません。

どなたか詳しい方ご教授をお願いできませんでしょうか?
オラクルのVerは9iです。よろしくお願い致します。

投稿日時 - 2006-02-02 20:05:25

QNo.1939354

すぐに回答ほしいです

質問者が選んだベストアンサー

pl_sqlは予めDBに登録しておく。
CREATE OR REPLACE PROCEDURE pl_hoge()
IS
・・・
BEGIN
・・・
END;
/

■hoge.bat
sqlplus user/pass@dbname @hoge.sql

■hoge.sql
SET serveroutput ON;
BEGIN
pl_hoge();
END;
/
exit;

1さんはhoge.sql最後のexit;を指摘してます。
私もそれと疑いますが。

投稿日時 - 2006-02-03 11:31:04

お礼

ありがとうございます。
まさにそれで解決しました!

投稿日時 - 2006-02-03 13:37:32

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

PL/SQLスクリプトの最後に、SQLPLUSを脱出するための
EXITが必要かと思います。

現状は、最初のSQLPLUSを起動して、実行後に、プロンプトを
出して止まっているんじゃないでしょうか。

スクリプトの最後に、EXITなる一行が書かれていれば、
途中でエラーにならない限り、プロンプトで止まることは
ないはずです。

エラーが出ると止まるので、それも考慮するなら、さらに、
ひと工夫必要かと思いますが。(本題からそれるので割愛します)

投稿日時 - 2006-02-03 01:16:24