SQL*PLUSもどきを作る その1(PowerShell Tips) で紹介した関数PSOracleの説明です。
まずは使用方法ですが、コマンドラインで
PS > PSOracle
と入力します。すると「ユーザー名「パスワード」「接続先」を聞かれるので順に入力します。
ユーザー名を入力してください: scott パスワードを入力してください: ***** 接続先を入力してください: server01 Oracle 8i Release 8.1.7.1.1 -Production
うまく接続ができると、接続先のサーバーのバージョンが表示されます。
ちなみに、コマンドラインで
PS > PSOracle -?
とすると使用方法が表示されます。
では、順を追って解説していきたいと思います。
1.PSOracle用ライブラリの読み込み
PSOracle関数を呼び出すと、最初にMy Documents\WindowsPowerShell\Oracle フォルダ内にある*.ps1ファイルを読み込み、PowerShellに関数を登録します。
こうすることで、PSOracleが実行されたときに、必要な関数を登録します。
SQL*PLUSもどきで必要な関数を*.ps1ファイル化して、このフォルダに置くことで、PSOracleを拡張していくことを可能にしてます。
動的にPowerShellに関数を登録するには呼び出し演算子(&)を使用して登録しています。
2.ユーザーからの情報取得
ユーザーから情報を取得するにはRead-Hostコマンドレットを使用します。
パスワードに関しては、入力した文字が丸見えでは困るので -assecurestring パラメータを付加しています。こうすることで入力した文字は*で表示されます。
3.グローバル変数の作成
PSOracleの関数を抜けてしまうと、ユーザーから取得した接続先情報が失われてしまうのでグローバル変数に登録します。
グローバル変数の作成は Set-Variableコマンドレットを使用して -Scopeパラメータで"Global"を使用します。
ここで作成した変数に、ユーザーから取得した情報をセットすることで、関数を抜けた後でも再利用できるようにしています。
4.Oracleへ接続する
Oracleへの接続はOracleClientを使用しています。
PSOracleが読み込まれたときに、System.Data.OracleClientをロードして使用可能にしています。
接続文字列は、自作関数 Get-OracleConnectionString(次回説明予定)で作成しています。この接続情報を元にOracleへ接続してサーバ情報を取得するSQL文を実行しデータセットへ結果を取得します。
5.エラートラップ
接続時のエラートラップは trap {} で行います。
これはVB.NETやC#でいうところのcatchの部分に相当します。 VB.NETやC#を扱っているとtry部分がないのが気になるところです。 関数内で例外が発生すると trap 部分が処理されます。
Theme design by Jelle Druyts
Pick a theme: BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2 BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2
Powered by: newtelligence dasBlog 2.0.7226.0
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2009, HIRO
E-mail