仕様: | DB2 CLI 2.1 | ODBC 1.0 |
|
SQLColumns() は指定された表の列のリストを戻します。 この情報は SQL 結果セットに入れて戻され、照会で生成された結果セットを取り出すのに使用される関数と同じ関数を使用して検索できます。
構文
SQLRETURN SQLColumns ( SQLHSTMT StatementHandle, /* hstmt */ SQLCHAR FAR *CatalogName, /* szCatalogName */ SQLSMALLINT NameLength1, /* cbCatalogName */ SQLCHAR FAR *SchemaName, /* szSchemaName */ SQLSMALLINT NameLength2, /* cbSchemaName */ SQLCHAR FAR *TableName, /* szTableName */ SQLSMALLINT NameLength3, /* cbTableName */ SQLCHAR FAR *ColumnName, /* szColumnName */ SQLSMALLINT NameLength4); /* cbColumnName */
関数の引き数
データ・タイプ | 引き数 | 用途 | 説明 |
---|---|---|---|
SQLHSTMT | StatementHandle | 入力 | ステートメント・ハンドル。 |
SQLCHAR | CatalogName | 入力 | 結果セットを修飾する pattern-value を入れることのできるバッファー。Catalog は 3 部分からなる表名の最初の部分である。
この引き数は DB2 Everyplace では無視される。 |
SQLSMALLINT | NameLength1 | 入力 | CatalogName の長さ。
この引き数は DB2 Everyplace では無視される。 |
SQLCHAR | SchemaName | 入力 | 結果セットをスキーマ名で修飾する pattern-value を入れることのできるバッファー。
この引き数は DB2 Everyplace では無視される。 |
SQLSMALLINT | NameLength2 | 入力 | SchemaName の長さ。
この引き数は DB2 Everyplace では無視される。 |
SQLCHAR | TableName | 入力 | 結果セットを表名で修飾する pattern-value を入れることのできるバッファー。 |
SQLSMALLINT | NameLength3 | 入力 | TableName の長さ。 |
SQLCHAR | ColumnName | 入力 | 結果セットを列名で修飾する pattern-value を入れることのできるバッファー。 |
SQLSMALLINT | NameLength4 | 入力 | ColumnName の長さ。 |
使用法
この関数は、1 つの表または 1 組の表の列についての情報を検索するときに呼び出します。 一般的なアプリケーションでこの関数を呼び出すのは、SQLTables() を呼び出した後、表の列を判別するときです。 アプリケーションでは、SQLTables() 結果セットの TABLE_NAME に戻された文字ストリングをこの関数の入力として使用する必要があります。
SQLColumns() は、TABLE_NAME と ORDINAL_POSITION の順に配列された標準の結果セットを戻します。SQLColumns が戻す列に結果セットの列をリストしてあります。
TableName 引き数と ColumnName 引き数は検索パターンを受け入れます。
この関数は結果セット内の列についての情報は戻しません。代わりに、SQLDescribeCol() または SQLColAttribute() を使用してください。
SQLColumns() の呼び出しは、多くの場合システム・カタログに対する複雑で時間のかかる照会となるため、控えめに行うようにしてください。 呼び出しを繰り返さず、結果を保管するようにしてください。
カタログ関数の結果セットの VARCHAR 列は、SQL92 の制限と一貫性を持たせるために最大長の属性は 128 で宣言されています。 DB2 の名前は 128 より短いため、128 文字 (NULL 終止符を含む) を常に出力バッファー用にとっておくか、または SQL_MAX_TABLE_NAME_LEN と SQL_MAX_COLUMN_NAME_LEN とを指定した SQLGetInfo() を呼び出して、接続されている DBMS がサポートする TABLE_NAME 列と COLUMN_NAME 列の実際の長さを判別することができます。
将来のリリースで新規の列が追加されたり、既存の列の名前が変更されても、現在の列の位置は変わりません。
SQLColumns が戻す列
DATA_TYPE 列の値が文字ストリングかバイナリー・ストリングを表す場合、この列には列の最大長 (文字数) が入ります。
DATE、TIME、または TIMESTAMP のデータ・タイプの場合、これは、文字に変換された値を表示するのに必要な文字の合計数になります。
数値データ・タイプの場合、これは、列内で許可される合計の桁数になります。
データ・タイプ属性も参照してください。
10 または NULL のいずれか。
DATA_TYPE が厳密な数値データ・タイプである場合、この列には値 10 が入り、COLUMN_SIZE には列に許可されている 10 進数の桁数が入ります。
数値データ・タイプの場合、DBMS は 10 の NUM_PREC_RADIX を戻します。
基数が適用されないデータ・タイプの場合は、NULL が戻されます。
列が NULL 値を受け入れない場合、SQL_NO_NULLS。
列が NULL 値を受け入れる場合、SQL_NULLABLE。
列のデフォルト値。デフォルト値が数値リテラルである場合は、 この列には単一引用符で囲まれていない数値リテラルの文字表現が入ります。デフォルト値が文字ストリングである場合は、この列には単一引用符で囲まれたそのストリングが入ります。デフォルト値が DATE、TIME、および TIMESTAMP といった列の疑似リテラルである場合は、引用符で囲まれていない疑似リテラルのキーワード (例えば、CURRENT DATE) が入ります。
NULL がデフォルト値として指定された場合は、 この列には引用符で囲まれていない「NULL」という単語が戻されます。デフォルト値が指定されなかった場合は、 この列は NULL となります。
列が NULL 可能でないことが既知である場合はストリング「NO」が入り、それ以外の場合は、「YES」が入ります。
この結果セットは X/Open CLI の Columns() 結果セット仕様と同一です。この仕様は、ODBC V2 で規定されている SQLColumns() 結果セットの拡張バージョンです。ODBC の SQLColumns() 結果セットには同じ位置に各列が含まれます。
注: この結果セットは X/Open CLI の Columns() 結果セット仕様と同一です。この仕様は、ODBC V2 に規定されている SQLColumns() 結果セットの拡張バージョンです。ODBC の SQLColumns() 結果セットには同じ位置に各列が含まれます。
戻りコード
診断
SQLSTATE | 説明 | 解説 |
---|---|---|
24000 | カーソル状態が無効。 | カーソルがすでにこのステートメント・ハンドルでオープンされている。 |
40003 08S01 | 通信リンク障害。 | 関数の完了前に、アプリケーションとデータ・ソース間の通信リンクに障害が生じた。 |
HY001 | メモリーの割り振りの失敗。 | DB2 CLI が、関数を実行または完了させるのに必要なメモリーを割り当てることができない。 |
HY014 | ハンドル数の限界に到達済み。 | 内部リソースが原因で、DB2 CLI がハンドルを割り振ることができない。 |
HY090 | 無効なストリング長またはバッファー長。 | 名前の長さの引き数のいずれかの値が、ゼロより小さいが、SQL_NTS と等しくない。 |
制約事項
なし。
関連した解説