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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) フォルダ内の特定 拡張子のファイルを一括実行するBat ファイルについて 4 2022/04/17 09:51
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- ネットワーク コマンドプロンプトで、コマンドの飛ばし方を教えてください。 ネットワークにデータを飛ばす(copy) 4 2022/10/19 11:21
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- その他(プログラミング・Web制作) DOSコマンドに詳しい方、お知恵をお貸しください 5 2022/11/04 20:55
- その他(パソコン・周辺機器) チャレンジタッチ3 改造 アプリインストールできない 1 2022/07/01 14:43
- その他(コンピューター・テクノロジー) batファイルでPCの設定内容やプロパティーを取得したいのですが、コマンド1個で1ファイルとなるのを 2 2022/04/27 15:27
- C言語・C++・C# exeファイルが作れない(windows10) 6 2022/08/13 08:47
- Microsoft ASP C#からvbsを実行したい 5 2022/11/24 17:31
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
バッチで実行するVBScriptからのストアドプロシージャの実行
その他(プログラミング・Web制作)
-
batファイルでのSQL(oracle)実行エラーについて
Oracle
-
SQL*Plusの終了はquit?exit?
Oracle
-
-
4
SQL Plusで項目名が最後まで表示されない?
Oracle
-
5
ReadLineでの読み出し行を指定する
Visual Basic(VBA)
-
6
PL/SQLでSPOOLさせたいのですが、可能でしょうか?
Oracle
-
7
PL/SQLをWindowsのBATファイルで実行するには
Oracle
-
8
sqlplusで表示が変なので、出力を整形したい。
Oracle
-
9
selectした結果の余計な余白を取るにはどうしたらよいのでしょうか
Oracle
-
10
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
11
vbsでのアスタリスクとファイル取り込み
Visual Basic(VBA)
-
12
vbsのセル値の取得について
その他(プログラミング・Web制作)
-
13
sqlplusでヘッダーが付かない
Oracle
-
14
VBSの処理中一旦処理を止めて再開させたい。
Visual Basic(VBA)
-
15
VBSから別のVBS起動するとき変数を渡したい
Visual Basic(VBA)
-
16
ストアド・プロシージャをバッチから起動させて実行する方法
Oracle
-
17
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
18
VBscriptからバッチに変数を渡すには?
その他(プログラミング・Web制作)
-
19
VBS パスに変数を入れたい
その他(プログラミング・Web制作)
-
20
バッチからsqlplusの接続エラーの検知について
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
Excel(エクセル) VBA プロシー...
-
VBscriptが起動しない?
-
「読み取りと実行」と「読み取...
-
exeファイルを実行するとコマン...
-
VB.NETでのDOSコマンドを実行に...
-
バッチファイルの内容を表示さ...
-
VBScriptでコマンドプロンプト...
-
[teraterm] waitコマンドで停止...
-
バッチファイルが不正終了して...
-
16進数の変換処理
-
VBS実行時にコマンドプロンプト...
-
ネットワーク名が見つかりません
-
VBAのコマンドプロンプトでpaus...
-
フォルダを閉じる
-
Excel VBA ステップインが途中...
-
NASに移したBATファイルからセ...
-
メッセージを他のPCに出したい
-
【VB.NET】exeを実行すると「発...
-
pythonでexeファイルが作成でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
「読み取りと実行」と「読み取...
-
exeファイルを実行するとコマン...
-
VBscriptが起動しない?
-
バッチファイルの内容を表示さ...
-
Excel VBA ステップインが途中...
-
エクセル フォルダの画像を画...
-
バッチファイルが不正終了して...
-
PDFファイルを開き、印刷し、閉...
-
複数のbatファイルを自動実行し...
-
[teraterm] waitコマンドで停止...
-
VBScriptでコマンドプロンプト...
-
ネットワーク名が見つかりません
-
Excel(エクセル) VBA プロシー...
-
Access の VBA 実行中に他の操...
-
VB.NETでのDOSコマンドを実行に...
-
Excelのセルの内容をコマンドプ...
-
VBS実行時にコマンドプロンプト...
-
VBA 既に開いているBookに継続...
-
メッセージを他のPCに出したい
おすすめ情報