Tuesday, April 29, 2008

この記事は

SQL*PLUSもどきを作る その1(PowerShell Tips)
SQL*PLUSもどきを作る その1の説明(PowerShell Tips)
SQL*PLUSもどきを作る その2(PowerShell Tips)
SQL*PLUSもどきを作る その3(PowerShell Tips) 
SQL*PLUSもどきを作る その4(PowerShell Tips)
SQL*PLUSもどきを作る その5(PowerShell Tips)

の続きです。

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

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

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

PS > Execute-Query SELECT文

のように入力する必要があります。

#=========================================================================================
# 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としました)

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

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
          7777 HIRO

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

Tuesday, April 29, 2008 12:38:32 AM (Tokyo Standard Time, UTC+09:00)  #    Comments [0]  |  Trackback
Comments are closed.

Theme design by Jelle Druyts

Pick a theme: