execute sql
現在使用中のデータベースに対してSQLコマンドを実行します。
名前 | 説明 | タイプ | 修飾子 |
---|---|---|---|
command | SQLクエリまたはクエリです。 | String | なし |
result, result2, result3,…, resultN | (任意)クエリまたはクエリの結果を保持するデータセットに割り当てる名前です。(詳細については を参照してください) (注意: 指定できる結果引数の数に制限はありません) | String | なし |
クエリの結果です
例・ケース1: 単一の結果を取得するため、SQLコマンドを実行します
次の例では、CustDB データベースの CTable テーブルから CID が102の場合の CName フィールドを取得し、返された値を期待値である「Roberto Dylando」と比較します。
variable driver host port database name username password others
create connection string db_conn_str SQL Server pc271 cusDB Trusted Connection=Yes
 
connection string name
connect database #db_conn_str Customers
 
name
use database Customers
 
command result
execute sql select CName from CTable where CID='102' CustomerName_ds
 
name filter
use data set CustomerName_ds
 
value expected
check value #CName Roberto Dylando
 
repeat for data set
 
name
disconnect database Customers
例・ケース2: 複数の結果を取得するため、SQLコマンドを実行します
この例では、直接のSQLクエリではなく、ストアドプロシージャを実行するためにアクション execute sql が使用されています。その後、ストアドプロシージャは2つのSQLクエリを実行し、2つの結果テーブルを返します。それぞれの結果テーブルはデータセットにキャプチャされます。データセットの内容は、それぞれ2つのテキストファイルに書き出されます。
このストアドプロシージャは以下のようになります:
このストアドプロシージャは以下のようになります:
variable driver host
create connection string db_conn_str SQL Server pc271
 
port database name username
>>> custDB
 
password others
>>> Trusted_Connection=Yes
 
connection string name
connect database #db_conn_str Sales
 
name
use database Sales
 
command result result2
execute sql exec dbo.SalesByYearAndCategory '7/1/1996', '7/31/1996', 'Beverages', '1998' Shipments_ds Sales_ds
 
file name text type
set text file d:\July_Shipments.txt ShippedDate OrderID Subtotal Year new
 
name filter
use data set /Shipments_ds
 
file name text type
set text file d:\July_Shipments.txt #"\n" & ShippedDate & " " & OrderID & " " & Subtotal & " " & Year append
 
repeat for data set
 
file name text type
set text file d:\1998_Beverages_sales.txt TotalPurchased ProductName new
 
name filter
use data set /Sales_ds
 
file name text type
set text file d:\1998_Beverages_sales.txt #"\n" & TotalPurchased & " " & ProductName append
 
repeat for data set
 
name
disconnect database Sales
生成されたテキストファイルは次のように表示されます:
July_shipments.txt
1998_Beverage_sales.txt
- 引数 command にはセミコロンで区切られた複数の SQL クエリを含めることができます。
- 異なるSQLコマンドは異なる種類の結果を生成することに注意してください(例えば、SQL の Select クエリはテーブルを返しますが、Insert、Update、Delete などの行ベースのコマンドはスカラー値を返し、Create や Use などのコマンドは null 値を返します)。ただし、対応する resultN 引数が指定されている限り、いずれの場合でも結果は TestArchitect データセットに保存されます。
- このアクションの実行には、コマンド文字列に複数のクエリが存在するか、またはストアドプロシージャが呼び出されるため、複数のテーブルが返される場合があります。
- 複数のクエリの場合、各結果テーブルは実行の順序に従って番号が付けられ、result、result2、result3 などで指定された対応する引数 result に返されます。例えば、コマンド文字列内の最初のクエリは、2つのテーブルを返すセレクトクエリである場合、その結果は result と result2 のデータセットに返され、次のクエリである挿入クエリは result3 のデータセットに結果を返します。
- 上記の result、result2、result3 などの引数に加えて、データセットを指定するために引数名 result0 と result1 を使用することも選択できます。ただし、これらのヘッダーで指定されたデータセットは、resultと同じようにクエリ文字列の最初に返されたテーブルを受け取ります。したがって、アクションラインがresult、result0、result1 の全ての引数ヘッダーを使用し、それぞれ異なるデータセット名を指定する場合、アクションの実行は内容が同じである3つのデータセットを生成します。
- 返されたデータセット内では、列ヘッダーの名前は対応する結果テーブルの列名から派生します(データセットとデータセット値の操作に関する詳細情報については、 Data sets を参照してください)。
- 一般的には、データセットの作成には各データ列の列ヘッダーが指定されている必要があります。ただし、SQLクエリが列名を持たない結果テーブルを返す場合、TestArchitect は受信データセットに対して列ヘッダー column 1、column 2 などを自動的に割り当てます。
- ストアドプロシージャの出力パラメータの値にアクセスするには、コマンド文字列で選択します。その値は、対応する引数 result で指定されたデータセットから取得できます。
- このアクションは修飾子 <ignore> をサポートしています。文字列
<ignore>
が引数の値として存在する場合、または引数に<ignore>
と評価する式を含まれている場合、アクションは実行中にスキップされます。