CLI の手引きおよび解説書
目的
仕様:
| DB2 CLI 1.1
| ODBC 1.0
| ISO CLI
|
SQLGetTypeInfo() は、
DB2 CLI に関連した DBMS でサポートされるデータ・タイプに関する情報を戻します。情報は、SQL 結果セット内に戻されます。照会を処理するときに使用される関数と同じ関数を使用して、列を受け取ることができます。
構文
SQLRETURN SQLGetTypeInfo (SQLHSTMT StatementHandle,
SQLSMALLINT DataType);
関数引き数
表 122. SQLGetTypeInfo 引き数
データ・タイプ
| 引き数
| 使用法
| 説明
|
SQLHSTMT
| StatementHandle
| 入力
| ステートメント・ハンドル。
|
SQLSMALLINT
| DataType
| 入力
| 照会される SQL データ・タイプ。サポートされるタイプは次のとおりです。
- SQL_ALL_TYPES
- SQL_BIGINT
- SQL_BINARY
- SQL_BLOB
- SQL_CHAR
- SQL_CLOB
- SQL_DATE
- SQL_DBCLOB
- SQL_DECIMAL
- SQL_DOUBLE
- SQL_FLOAT
- SQL_GRAPHIC
- SQL_INTEGER
- SQL_LONGVARBINARY
- SQL_LONGVARCHAR
- SQL_LONGVARGRAPHIC
- SQL_NUMERIC
- SQL_REAL
- SQL_SMALLINT
- SQL_TIME
- SQL_TIMESTAMP
- SQL_VARBINARY
- SQL_VARCHAR
- SQL_VARGRAPHIC
SQL_ALL_TYPES の指定があると、サポートされるすべてのデータ・タイプに関する情報が、
TYPE_NAME ごとに降順で戻されます。サポートされないすべてのデータ・タイプは、結果セットには入れられません。
|
使用法
SQLGetTypeInfo() は結果セットを生成し、照会を実行する場合と同じ処理を行うので、カーソルの生成やトランザクションの開始も行います。このステートメント・ハンドルで別のステートメントを作成して実行するには、カーソルをクローズする必要があります。
SQLGetTypeInfo() が無効な DataType を使用して呼び出されると、空の結果セットが戻されます。
LONGDATACOMPAT キーワードまたは SQL_LONGDATA_COMPAT 接続属性のどちらかを設定すると、
DATA_TYPE 引き数には SQL_BLOB、 SQL_CLOB および SQL_DBCLOB の代わりに、
SQL_LONGVARBINARY と SQL_LONGVARCHAR および SQL_LONGVARGRAPHIC が戻されます。
この関数で生成される結果セットの列について、次に説明します。
将来のリリースでは、列が新たに追加されたり、既存の列の名前が変更されたりする可能性はありますが、現行の列の位置が変更されることはありません。戻されるデータ・タイプは、CREATE TABLE、ALTER TABLE、
DDL ステートメント内で使用できるデータ・タイプです。ロケーター・データ・タイプなどの非持続性データ・タイプは、戻される結果セットには含まれません。ユーザー定義データ・タイプも戻されません。
SQLGetTypeInfo で戻される列
- 列 1 TYPE_NAME (VARCHAR(128) NOT NULL データ・タイプ)
- SQL データ・タイプ名 (たとえば、VARCHAR、BLOB、DATE、
INTEGER) の文字表示。
- 列 2 DATA_TYPE (SMALLINT NOT NULL データ・タイプ)
- SQL データ・タイプ定義値 (たとえば、SQL_VARCHAR、
SQL_BLOB、
SQL_DATE、SQL_INTEGER)。
- 列 3 COLUMN_SIZE (INTEGER データ・タイプ)
- データ・タイプが文字または 2 進ストリングの場合、この列には最大長がバイト単位で入ります。グラフィック (DBCS) ストリングの場合は、これはその列の 2 バイト文字の数になります。
日付、時刻、タイム・スタンプ・データ・タイプの場合、これは文字に変換されたときに値を表示するために必要となる文字数の合計です。
数値データ・タイプの場合は、これは桁数の合計です。
- 列 4 LITERAL_PREFIX (VARCHAR(128) データ・タイプ)
- DB2 がこのデータ・タイプのリテラルの接頭部として認識する文字。リテラル接頭部が適用不能である場合には、データ・タイプのこの列はヌルです。
- 列 5 LITERAL_SUFFIX (VARCHAR(128) データ・タイプ)
- DB2 がこのデータ・タイプのリテラルの接尾部として認識する文字。リテラル接頭部が適用不能である場合には、データ・タイプのこの列はヌルです。
- 列 6 CREATE_PARAMS (VARCHAR(128) データ・タイプ)
- この列のテキストには、
TYPE_NAME 列の名前を SQL のデータ・タイプとして使用したときにアプリケーションが括弧内に指定できる各パラメーターに対応付けて、キーワードをコンマで区切って列挙したリストが入ります。このリスト内のキーワードは、LENGTH、
PRECISION、
SCALE のいずれかにできます。これらは、SQL 構文での使用が要求されている順序に従って配列されています。
データ・タイプ定義のためのパラメーター (たとえば、INTEGER) がない場合は、ヌル標識が戻されます。
注: | CREATE_PARAM の目的は、アプリケーションが DDL ビルダー のインターフェースをカスタマイズできるようにすることです。アプリケーションは、これを使用してできるのは、データ・タイプを定義したり、編集制御のラベルを付けるのに使用できるテキストをローカルにするために必要な引き数の個数を判別することだけであることを予期する必要があります。
|
- 列 7 NULLABLE (SMALLINT NOT NULL データ・タイプ)
- データ・タイプがヌル値を受け入れるかどうかを指示します。
- ヌル値を使用できない場合は SQL_NO_NULLS に設定します。
- ヌル値を使用できる場合は SQL_NULLABLE に設定します。
- 列 8 CASE_SENSITIVE (SMALLINT NOT NULL データ・タイプ)
- データ・タイプを照合するときに大文字小文字を区別するかどうかを示します。有効な値は TRUE と FALSE です。
- 列 9 SEARCHABLE (SMALLINT NOT NULL データ・タイプ)
- WHERE 文節でのデータ・タイプの使用方法を示します。有効値は次のとおりです。
- SQL_UNSEARCHABLE : データ・タイプが WHERE 文節で使用できない場合。
- SQL_LIKE_ONLY : WHERE 文節で、データ・タイプが LIKE 述部でのみ使用できる場合。
- SQL_ALL_EXCEPT_LIKE : WHERE 文節で、データ・タイプが LIKE を除くすべての比較演算子で使用できる場合。
- SQL_SEARCHABLE : WHERE 文節で、データ・タイプがどの比較演算子ででも使用できる場合。
- 列 10 UNSIGNED_ATTRIBUTE (SMALLINT データ・タイプ)
- データ・タイプが無符号である場所を示します。有効値は SQL_TRUE、SQL_FALSE、または NULL です。この属性をデータ・タイプに適用できないと、ヌル標識が戻されます。
- 列 11 FIXED_PREC_SCALE (SMALLINT NOT NULL データ・タイプ)
- データ・タイプが正確な数値であり、かつ常に同じ精度と位取りである場合には、値 SQL_TRUE が入ります。そうでない場合には、 SQL_FALSE が入ります。
- 列 12 AUTO_INCREMENT (SMALLINT データ・タイプ)
- 行が挿入されたときに、このデータ・タイプの列が自動的に固有の値に設定される場合には SQL_TRUE が入ります。そうでない場合には SQL_FALSE が入ります。
- 列 13 LOCAL_TYPE_NAME (VARCHAR(128) データ・タイプ)
- この列には、データ・タイプの正規名とは異なる、データ・タイプのローカライズされた (ネイティブ言語の) 名前が入ります。ローカライズされた名前がない場合は、この列は NULL になります。
この列は表示専用です。ストリングの文字セットはロケールに依存しており、通常はデータベースの省略時文字セットです。
- 列 14 MINIMUM_SCALE (INTEGER データ・タイプ)
- SQL データ・タイプの最小位取り。データ・タイプが固定位取りの場合、MINIMUM_SCALE 列と MAXIMUM_SCALE 列には同じ値が入れられます。位取りが適用できないと、NULL が戻されます。
- 列 15 MAXIMUM_SCALE (INTEGER データ・タイプ)
- SQL データ・タイプの最大位取り。位取りが適用できないと、NULL が戻されます。最大位取りが DBMS 内で個別に定義されておらず、その代わりに列の最大長と同じものとして定義されている場合、この列には COLUMN_SIZE と同じ値が入れられます。
- 列 16 SQL_DATA_TYPE (SMALLINT NOT NULL データ・タイプ)
- SQL_DESC_TYPE 記述子のフィールドに表示される SQL データ・タイプの値。この列は、
DATA_TYPE 列と同じです (DB2 CLI がサポートしていないインターバル・データ・タイプと日時データ・タイプは除く)。
- 列 17 SQL_DATETIME_SUB (SMALLINT データ・タイプ)
- このフィールドは、常に NULL です (DB2 CLI はインターバル・データ・タイプと日時データ・タイプをサポートしていません)。
- 列 18 NUM_PREC_RADIX (INTEGER データ・タイプ)
- データ・タイプが近似値タイプである場合、この列には値 2 が含まれており、これはビット数を COLUMN_SIZE で指定することを示しています。厳密な数値タイプである場合、この列には値 10 が含まれており、これは 10 進数値を COLUMN_SIZE で指定することを示しています。その他の場合、この列は NULL になります。
- 列 19 INTERVAL_PRECISION (SMALLINT データ・タイプ)
- このフィールドは、常に NULL です (DB2 CLI はインターバル・データ・タイプをサポートしていません)。
戻りコード
- SQL_SUCCESS
- SQL_ERROR
- SQL_INVALID_HANDLE
診断
表 123. SQLGetTypeInfo SQLSTATE
SQLSTATE
| 説明
| 解説
|
24000
| カーソル状態が無効です。
| カーソルはすでに、ステートメント・ハンドル上にオープンされています。
StatementHandle がクローズされていませんでした。
|
40003 08S01
| 通信リンクに障害が起きました。
| アプリケーションとデータ・ソースとの間の通信リンクが、関数の完了する前に失敗しました。
|
HY001
| メモリーの割り振り失敗です。
| DB2 CLI は、関数の実行または完了をサポートするのに必要なメモリーを割り振ることができません。
|
HY004
| SQL のデータ・タイプが範囲外です。
| 指定された DataType は無効です。
|
HY010
| 関数の順序エラーです。
| 実行時データ (SQLParamData()、SQLPutData()) 操作中に、関数が呼び出されました。
BEGIN COMPOUND と END COMPOUND の SQL 操作中に、関数が呼び出されました。
|
HYT00
| タイムアウトになりました。
| データ・ソースが結果セットを返す前に、タイムアウト期間が満了しました。タイムアウトは、
Windows 3.1 や Macintosh System 7 のようなマルチタスクではないシステム上でのみサポートされています。タイムアウト期間は、
SQLSetConnectAttr() の SQL_ATTR_QUERY_TIMEOUT 属性を使用して設定することができます。
|
制約
次の ODBC 指定の SQL データ・タイプ (および対応する DataType 定義値) は、
IBM RDBMS ではサポートされません。
- データ・タイプ
- DataType
- TINY INT
- SQL_TINYINT
- BIG INT
- SQL_BIGINT
- BIT
- SQL_BIT
CLI サンプル dtinfo.c
(ここで完全サンプル
dtinfo.c を使用することもできます
。)
/* From the CLI sample DTINFO.C */
/* ... */
/* call SQLTables */
printf("\n Call SQLGetTypeInfo.\n");
sqlrc = SQLGetTypeInfo( hstmt, SQL_ALL_TYPES);
STMT_HANDLE_CHECK( hstmt, sqlrc);
参照
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]