HIRO's.NET

VB.NET, C#, PowerShell Tipsサイト

 VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。

 基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。

HIRO's.NET RSSHIRO's.NET RSS


PowerShellの開発でお困りのことはありませんか?
そんな悩みは当サイトで解決!!

HOME > PowerShell Tips > 自作関数(Oracle用) Tips メニュー

05.SQL*PLUSもどきを作る その5

 
UPDATE:2008/05/03    
 
<< 前のTips  次のTips >> 



SQL*PLUSもどきを作る その1
SQL*PLUSもどきを作る その2
SQL*PLUSもどきを作る その3
SQL*PLUSもどきを作る その4
の続きです。

ユーザーが入力したQueryStringを実行し結果を表示する関数 Execute-Query を紹介します。

この関数は、SQL*PLUS同様、複数行にわたるQueryStringを実行し、結果を表示することができます。

ただし、SQL*PLUSのようにいきなりSELECT文を書き始めることはできず、List1のように

Execute-Query SELECT文[Enter]

と入力する必要があります。

Execute-Query.ps1

#=========================================================================================
# Execute-Query: QueryStringを実行する
#
# UPDATE 2008/04/28 Ver.1.0.0
#
# copyright HIRO's.NET(http://hiros-dot.net/)
#=========================================================================================
function global:Execute-Query
{
#複数行のQueryStringを受け取る
$strSQL = Read-MultiLine

#QueryStringを実行する
$dtSet = Execute-QueryString $strSQL
if ( $dtSet.Tables.Count -gt 0 )
{
#format-tableコマンドレットでデータを表示
$dtSet.Tables[0].Rows | format-table
}
}

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

開発ポイントですが、

複数行の入力を受け取ることができるようにSQL*PLUSもどきを作る その5(PowerShell Tips)で紹介した Read-MultiLine関数を使用しています。

入力を受け取った後は SQL*PLUSもどきを作る その3(PowerShell Tips) で紹介したExecute-QueryString関数を実行し、結果を表示しています。

QueryStringを実行するたびに関数名 Execute-Query と入力するのは面倒なので、エイリアス設定をすることをおすすめします。(今回エイリアス名をEQSとしました)

使用方法および実行結果は下記の通りです。

List1

PS > eqs
select * from
emp
;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ----- --- --- -------- --- ---- ------
7369 SMITH CLERK 7902 1980/12/17 ... 800 20
7499 ALLEN SALESMAN 7698 1981/02/20 ... 1600 300 30
7521 WARD SALESMAN 7698 1981/02/22 ... 1250 500 30
7566 JONES MANAGER 7839 1981/04/02 ... 2975 20
7654 MARTIN SALESMAN 7698 1981/09/28 ... 1250 1400 30
7698 BLAKE MANAGER 7839 1981/05/01 ... 2850 30
7782 CLARK MANAGER 7839 1981/06/09 ... 2450 10
7788 SCOTT ANALYST 7566 1987/04/19 ... 3000 20
7839 KING PRESIDENT 1981/11/17 ... 5000 10
7844 TURNER SALESMAN 7698 1981/09/08 ... 1500 0 30
7876 ADAMS CLERK 7788 1987/05/23 ... 1100 20
7900 JAMES CLERK 7698 1981/12/03 ... 950 30
7902 FORD ANALYST 7566 1981/12/03 ... 3000 20

List2

PS > eqs
select
*
from
emp
where JOB='CLERK';

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ----- --- --- -------- --- ---- ------
7369 SMITH CLERK 7902 1980/12/17 ... 800 20
7876 ADAMS CLERK 7788 1987/05/23 ... 1100 20
7900 JAMES CLERK 7698 1981/12/03 ... 950 30
 
<< 前のTips  次のTips >>