
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も見ています
-
SQLローダーで複数のCSVファイルのデータを一つのテーブルにInsertしたい
その他(データベース)
-
SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について
Oracle
-
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
-
4
SQLServer sqlcmdが使えない
SQL Server
-
5
SQLPLUSで結果を画面に表示しない
Oracle
-
6
VBSでDim、Private、Publicの違い
Visual Basic(VBA)
-
7
バッチからsqlplusの接続エラーの検知について
その他(プログラミング・Web制作)
-
8
oracle spool SJIS → UTF-8
Oracle
-
9
VBScriptでファイルの日時順(降順)で並び替えて一覧を出力したい。
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
これってパソコンの最適化が完...
-
VBScriptでコマンドプロンプト...
-
Windows System32 Security Hea...
-
Excel(エクセル) VBA プロシー...
-
Excelのセルの内容をコマンドプ...
-
WSH.Run の処理内容をテキスト...
-
pythonスクリプトを管理者権限...
-
コマンドプロンプトで 「ファ...
-
VBAを時間指定で自動実行
-
masm32の設定
-
PDFファイルを開き、印刷し、閉...
-
WSH/VBScript DHCPの有効設定に...
-
Rubyは実行するのが遅いと聞い...
-
テキストファイルの1行目のみを...
-
大至急お願いします。Pythonの...
-
大量のフォルダからひとつのフ...
-
binファイルを解凍したいの...
-
win10の「フォト」で、「次へ」...
-
テキストファイルで提出とは?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
[teraterm] waitコマンドで停止...
-
バッチファイルの内容を表示さ...
-
exeファイルを実行するとコマン...
-
VBscriptが起動しない?
-
これってパソコンの最適化が完...
-
「読み取りと実行」と「読み取...
-
複数のbatファイルを自動実行し...
-
Windows System32 Security Hea...
-
ネットワーク名が見つかりません
-
エクセル フォルダの画像を画...
-
Excel(エクセル) VBA プロシー...
-
PDFファイルを開き、印刷し、閉...
-
Access の VBA 実行中に他の操...
-
バッチファイルが不正終了して...
-
VScodeのエラー解決法 Pythonの...
-
VBScriptでコマンドプロンプト...
-
pythonスクリプトを管理者権限...
-
VB.NETでのDOSコマンドを実行に...
-
batからexeを実行し戻り値を受...
おすすめ情報