2009/10/20 (火) 22:04:01  
[477] SQL*Plusで編集中のファイルを実行してアウトプットウィンドウに出力

SQL*Plusのもっさいウインドウを常時表示させとくのはウザいので。
一時ファイルにカレントのファイル名と quit コマンドを書き出して、
それをSQL*Plusに渡す。出力はアウトプットウィンドウへ。
接続情報を対話式で入力できたらいいんだけど。

var SQLPLUS_HOME = "C:\\oracle\\product\\x.x.x\\OraHome\\BIN";
var TMP_FILENAME = "temp.sql";
var USER = "USER";
var TNS  = "TNS";
var PWD  = "PASSWORD";

var WshShell;
var objFso;
var objOutput;
var tempFilePath;

// Shellオブジェクトを取得
WshShell = new ActiveXObject("WScript.Shell");

// 一時ファイル名を決定
tempFilePath = WshShell.ExpandEnvironmentStrings("%TEMP%") + "\\" + TMP_FILENAME;

// 出力ストリームを開く(上書き)
objFso = new ActiveXObject("Scripting.FileSystemObject");
objOutput = objFso.CreateTextFile(tempFilePath , true);

// 一時ファイルにSQLスクリプトを出力
objOutput.WriteLine("set LINESIZE 20000;");                             // select実行時に悲しいことにならないように
objOutput.WriteLine("ALTER SESSION SET PLSQL_WARNINGS='ENABLE:ALL';");  // PL/SQLのコンパイル警告は全部見たい
objOutput.WriteLine("start " + Editor.ExpandParameter("$F") + ";");     // ファイルを実行
objOutput.WriteLine("show errors;");                                    // コンパイルエラーがあれば表示
objOutput.WriteLine("quit;");

// 出力ストリームを閉じる
objOutput.close();
objOutput = null;

// 本当はここらへんでアウトプットウィンドウをクリアしたい

// 一時ファイルをSQL*Plusで実行(アウトプットウィンドウに標準出力を得る)
Editor.ExecCommand(SQLPLUS_HOME + "\\sqlplus.exe " + USER + "/" + PWD + "@" + TNS + " @" + tempFilePath, 1);
objFso = null;
WshShell = null;

// 一応アウトプットウィンドウをアクティブにしておく
Editor.ActivateWinOutput();
foohogehoge
Opera/9.80 (Windows NT 6.0; U; ja) Presto/2.2.15 Version/10.00

[▼次のスレッド]
INCM/CMT
Cyclamen v3.81