Thursday, June 05, 2008

この記事は

記事 関数名 説明
SQL*PLUSもどきを作る1 PSOracle SQL*PLUSもどきのメイン関数
SQL*PLUSもどきを作る1の説明 PSOracle SQL*PLUSもどきのメイン関数の説明
SQL*PLUSもどきを作る2 Get-OracleConnectionStirng 接続文字列を作成する
SQL*PLUSもどきを作る3 Execute-QueryString SQLを実行した結果をDataSetに格納して返す
SQL*PLUSもどきを作る4 desc descコマンド
SQL*PLUSもどきを作る5 Read-MultiLine コマンドラインから複数行の入力を受け取る
SQL*PLUSもどきを作る6 Execute-Query SQLを実行して、結果をコンソールウィンドウに表示する
SQL*PLUSもどきを作る5(改訂版) Read-MultiLine コマンドラインから複数行の入力を受け取る。終端判定を1文字以上でも行えるよう見直し。
SQL*PLUSもどきを作る7 Disconnect 切断処理

SQL*PLUSもどきを作る8

Write-SqlHistory SQL実行履歴の保存
SQL*PLUSもどきを作る6(改訂版) Execute-Query SQLを実行して、結果をコンソールウィンドウに表示する。SQL実行履歴作成機能の追加。

SQL*PLUSもどきを作る9

View-History SQL履歴からの実行機能作成

の続きです。

 

SQL*PLUSもどきを作成する その9」でView-History 関数を作成しました。

これに伴い、SQLを実行する関数 Execute-Queryを変更し、View-History関数を使用できるようにしたいと思います。

#=========================================================================================
# Execute-Query: QueryStringを実行する
#
# UPDATE 2008/04/28     Ver.1.0.0
#        2008/05/19     Ver.1.0.1   SQL履歴作成機能の追加
#        2008/06/03     Ver.1.0.2   履歴からの実行機能および取得データエクスポート機能の追加
#
# copyright HIRO's.NET(http://hiros-dot.net/)
#=========================================================================================
function global:Execute-Query([string]$ExportXmlFile, [switch]$History)
{
    if ( $History )
    {
        #履歴からの実行(Ver.1.0.2 )
        $XmlFile = "$([Environment]::GetFolderPath(`"MyDocuments`"))\WindowsPowerShell\Oracle\History.xml"
        $SqlHis = View-History $XmlFile
      
        if ($SqlHis -eq $Null) { return }
    }
    
    if ( $SqlHis.Length -gt 0 )
    {
        $strSQL = $SqlHis
    }
    else
    {
        Write-Host "SQLを入力してください。" -foregroundcolor Yellow
        Write-Host "`";`"で入力を終了し、実行します。" -foregroundcolor Yellow
        
        #複数行のQueryStringを受け取る
        $strSQL = Read-MultiLine
    }
    
    #履歴の作成(Ver.1.0.1)
    Write-SqlHistory $strSQL
    
    #QueryStringを実行する
    $dtSet = Execute-QueryString $strSQL
    if ( $dtSet.Tables.Count -gt 0 )
    {
        #format-tableコマンドレットでデータを表示
        $dtSet.Tables[0].Rows | format-table
    }
    
    #取得データをXMLにエクスポート(Ver.1.0.2)
    if ( $ExportXmlFile.Length -gt 0 )
    {
        $dtSet.WriteXml($ExportXmlFile);
    }
}

#エイリアス設定
Set-Alias -name EQS -value Execute-Query -scope "Global"

実は、おまけとして、SQL実行結果をXMLファイルにエクスポートする機能も付けてみました。

まずは、前回作成した関数を呼び出す方法について説明します。

関数の引数に [switch]$History というのがあるのですが(switchパラメータについてはこちらを参照)、このパラメータを指定して関数を実行するとSQL履歴実行フォームが表示される仕組みとなっています。

このフォームが閉じられると、履歴からSQLが選択されている場合には $SqlHisにそのSQLが代入されます。

この場合の実行方法は下記の通りです。

PS > eqs -History

次に、おまけのエクスポート機能ですが、この関数を

PS > eqs "C:\Work\SQL.xml"

のようにして、実行結果のエクスポート先を指定します。この場合は "C:\Work\SQL.xml" というファイルが作成されます。

このエクスポート機能は、先ほどのSQL履歴実行フォームとの併用が可能です。

併用する場合は

PS > eqs "C:\Work\SQL.xml" -History

のようにします。 これは、SQL履歴実行を行った後に、XMLエクスポートを行います。

 

Thursday, June 05, 2008 10:29:26 PM (Tokyo Standard Time, UTC+09:00)  #    Comments [0]  |  Trackback
Comments are closed.

Theme design by Jelle Druyts

Pick a theme: