取得した列のバインド変数の自動作成

ttIsqlautovariablesを構成すると、TimesTenでは、フェッチした各列名を使用したバインド変数を自動作成します。行がフェッチされると、フェッチされた値が変数にコピーされます。

次の例では、employees表からすべての行が選択されます。すべての列が取得されるので、自動変数が作成され、各列に名前が付けられます。このバインド変数には、各列で取得した最後の値が含まれます。

Command> SET AUTOVARIABLES ON;
Command> SELECT * FROM employees;
...
< 204, Hermann, Baer, HBAER, 515.123.8888, 1994-06-07 00:00:00, PR_REP, 10000,
 <NULL>, 101, 70 >
< 205, Shelley, Higgins, SHIGGINS, 515.123.8080, 1994-06-07 00:00:00, AC_MGR, 
12000, <NULL>, 101, 110 >
< 206, William, Gietz, WGIETZ, 515.123.8181, 1994-06-07 00:00:00, AC_ACCOUNT, 
8300, <NULL>, 205, 110 >

Command> PRINT;
EMPLOYEE_ID          : 206
FIRST_NAME           : William
LAST_NAME            : Gietz
EMAIL                : WGIETZ
PHONE_NUMBER         : 515.123.8181
HIRE_DATE            : 1994-06-07 00:00:00
JOB_ID               : AC_ACCOUNT
SALARY               : 8300
COMMISSION_PCT       : <NULL>
MANAGER_ID           : 205
DEPARTMENT_ID        : 110

各結果セットがフェッチされると、各列値は列名を使用した変数に配置されます。複数の行がフェッチされると、各列の最終値が変数の値を上書きします。変数が上書きされないようにするには、設定をオフにします。

列名として別名を渡すと、自動バインド変数名に列名ではなくその別名が使用されます。

Command> SET AUTOVARIABLES ON;
Command> SELECT employee_id ID, First_name SURNAME, last_name LASTNAME 
 FROM employees;
 
ID, SURNAME, LASTNAME
...
< 204, Hermann, Baer >
< 205, Shelley, Higgins >
< 206, William, Gietz >
107 rows found.
Command> PRINT;
ID                   : 206
SURNAME              : William
LASTNAME             : Gietz

また、describeを使用すると列名を表示することもできます。次の例では、describeコマンドを使用し、ttConfiguration組込みプロシージャの列名を表示します。

Command> DESCRIBE TTCONFIGURATION;
 
Procedure TTCONFIGURATION:
  Parameters:
    PARAMNAME                       TT_VARCHAR (30)
  Columns:
    PARAMNAME                       TT_VARCHAR (30) NOT NULL
    PARAMVALUE                      TT_VARCHAR (1024)
 
1 procedure found.

既知の列名を指定せずにデータをフェッチする問合せでは、列名を表示するようにcolumnlabels onを設定します。次の例では、ttConfiguration組込みプロシージャによって、paramnameおよびparamvalueの列が返されています。

Command> SET AUTOVARIABLES ON;
Command> SET COLUMNLABELS ON;

Command> call TTCONFIGURATION('LockLevel');

PARAMNAME, PARAMVALUE
< LockLevel, 0 >
1 row found.
Command> print paramname;
PARAMNAME : LockLevel