
WSHShell.Runにて、SQL*Plus経由でXXX.sql(内部でストアドプロシージャをコールします)を実行し、ログも出力したいのですが、以下のコマンドをRunに指定すると、sqlplusより返ってこなくなってしまいます。
コマンドプロンプトで実行する分には、正常に終了するのですが・・・。
何が悪いのかわかりません。。
sqlplus -s ユーザー/パスワード@ホスト名 @C:\temp\XXX.sql > C:\temp\XXX.log
代替案として、VBSにてOracleのProcedureをコールする方法でも構いません。
わかる方いらっしゃいましたらご教授願います。
ちなみに、コマンド部分をbatファイルにしてそのbatファイルをVBSでコールすることは可能でした。
No.3ベストアンサー
- 回答日時:
うろおぼえですみません。
WSHShell.Run (文字列) は、
コマンドラインからの実行とイコールではありません。
コマンド Start "" と同じ
というか、「ファイル名を指定して実行」と同等なはずです。
(なので WSHShell.Run は実行ファイル以外も指定できる)
なので、CMD /C (文字列) で実行する必要があったはずです。
とはいえ、ADOで問題ないならそのほうがいいかも。
No.2
- 回答日時:
>代替案として、VBSにてOracleのProcedureをコールする方法でも構いません。
VBSならADOを使ってOracleに直接接続出来るはずです。
ASPなどと基本的には同じなのでそれらを参考にすれば良いと思います。
この回答への補足
ADOで接続して、ストアドプロシージャのコールが可能ということでしょうか?
できれば、具体的な方法を教えて下さい。
ADOで接続し「EXEC プロシージャ名」でキックしてみたのですが、SQLでは無いためエラーとなってしまいました。
No.1
- 回答日時:
確認1.ストアドを実行しているとのことですので、処理に時間がかかっているだけということはないですよね?
確認2.実行している .sql ファイルの最後にexit命令を書いてあるでしょうか?
あと、sqlplusを WshShellで実行すると別シェルで実行されるのでリダイレクトでは結果を取れないと思います。sqlファイルの中でspoolすればどうでしょう。
--vbs例--
strPlusCmd = "sqlplus.exe"
strExecPath = "E:\temp"
strExecFile = strExecPath & "\execOracle.sql"
strLogFile = strExecPath & "\execOracle.log"
set WshShell = WScript.CreateObject("WScript.Shell")
strExecCmd = strPlusCmd & " -s /nolog @" & strExecFile & " " & strLogFile
WshShell.Run strExecCmd, 0, true
set WshShell = Nothing
--sql--
conn example/example@example
set term off
set head off
set pages 0
spool &1
select username from dba_users;
spool off
exit
この回答への補足
確認1.ずっとプロセスが残ったままになります。
確認2.quitを記載しています。
詳しい説明をありがとうございました。
今回は、spoolを使わずにリダイレクトにて結果の出力を取得することができました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
「win11-23H2」を「win11-24H2...
-
[teraterm] waitコマンドで停止...
-
「読み取りと実行」と「読み取...
-
バッチファイルが不正終了して...
-
バッチファイルの内容を表示さ...
-
PDFファイルを開き、印刷し、閉...
-
ExcelのVBAが特定のPC上でのみ...
-
VBscriptが起動しない?
-
Excel(エクセル) VBA プロシー...
-
Office2000の修復について教え...
-
exeファイルを実行するとコマン...
-
COBOLのイニシャライズとバリュ...
-
.cshrcについて教えてください。
-
複数のbatファイルを自動実行し...
-
Excelのセルの内容をコマンドプ...
-
これってパソコンの最適化が完...
-
シェルからCで作った実行ファイ...
-
Access の VBA 実行中に他の操...
-
batからexeを実行し戻り値を受...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
「win11-23H2」を「win11-24H2...
-
[teraterm] waitコマンドで停止...
-
「読み取りと実行」と「読み取...
-
これってパソコンの最適化が完...
-
バッチファイルの内容を表示さ...
-
exeファイルを実行するとコマン...
-
複数のbatファイルを自動実行し...
-
VBscriptが起動しない?
-
ExcelのVBAが特定のPC上でのみ...
-
Excel(エクセル) VBA プロシー...
-
Windows System32 Security Hea...
-
PDFファイルを開き、印刷し、閉...
-
VBScriptでコマンドプロンプト...
-
batからexeを実行し戻り値を受...
-
Access の VBA 実行中に他の操...
-
Excel VBA ステップインが途中...
-
【VB.NET】exeを実行すると「発...
-
バッチファイルが不正終了して...
-
VBA 既に開いているBookに継続...
おすすめ情報