仕様: | DB2 CLI 2.1 | ODBC 1.0 |
|
SQLForeignKeys() は指定された表の外部キーに関する情報を戻します。 この情報は SQL 結果セットに戻されます。この結果セットは、照会で生成された結果セットの取り出しに使用するものと同じ関数を使用して処理することができます。 PKCatalogName、NameLength1、PKSchemaName、NameLength2、FKCatalogName、NameLength4、FKSchemaName、NameLength5 は無視されます。戻された 結果セットの列 1、2、5、6、12、および 13 は、常に長さがゼロのストリングです。 戻された結果セットの列 10、11、および 14 は常にゼロ。
構文
SQLRETURN SQLForeignKeys ( SQLHSTMT StatementHandle, /* hstmt */ SQLCHAR *FAR PKCatalogName, /* szPkCatalogName */ SQLSMALLINT NameLength1, /* cbPkCatalogName */ SQLCHAR *FAR PKSchemaName, /* szPkSchemaName */ SQLSMALLINT NameLength2, /* cbPkSchemaName */ SQLCHAR *FAR PKTableName, /* szPkTableName */ SQLSMALLINT NameLength3, /* cbPkTableName */ SQLCHAR *FAR FKCatalogName, /* szFkCatalogName */ SQLSMALLINT NameLength4 /* cbFkCatalogName */ SQLCHAR *FAR FKSchemaName, /* szFkSchemaName */ SQLSMALLINT NameLength5, /* cbFkSchemaName */ SQLCHAR *FAR FKTableName, /* szFkTableName */ SQLSMALLINT NameLength6); /* cbFkTableName */
関数の引き数
データ・タイプ | 引き数 | 用途 | 説明 |
---|---|---|---|
SQLHSTMT | StatementHandle | 入力 | ステートメント・ハンドル。 |
SQLCHAR* | PKCatalogName | 入力 | 主キー表のカタログ修飾子。 このフィールドは、DB2 Everyplace では無視されます。 |
SQLSMALLINT | NameLength1 | 入力 | PKCatalogName の長さ。このフィールドは、DB2 Everyplace では無視されます。 |
SQLCHAR* | PKSchemaName | 入力 | 主キー表のスキーマ修飾子。 このフィールドは、DB2 Everyplace では無視されます。 |
SQLSMALLINT | NameLength2 | 入力 | PKSchemaName の長さ。このフィールドは、DB2 Everyplace では無視されます。 |
SQLCHAR* | PKTableName | 入力 | 主キーが入っている表の名前。 |
SQLSMALLINT | NameLength3 | 入力 | PKTableName の長さ。 |
SQLCHAR* | FKCatalogName | 入力 | 外部キーが入っている表のカタログ修飾子。このフィールドは、DB2 Everyplace では無視されます。 |
SQLSMALLINT | NameLength4 | 入力 | FKCatalogName の長さ。このフィールドは、DB2 Everyplace では無視されます。 |
SQLCHAR* | FKSchemaName | 入力 | 外部キーが入っている表のスキーマ修飾子。 このフィールドは、DB2 Everyplace では無視されます。 |
SQLSMALLINT | NameLength5 | 入力 | FKSchemaName の長さ。このフィールドは、DB2 Everyplace では無視されます。 |
SQLCHAR* | FKTableName | 入力 | 外部キーが入っている表の名前。 |
SQLSMALLINT | NameLength6 | 入力 | FKTableName の長さ。 |
使用法
PKTableName に表の名前が入っていて、FKTableName が空ストリングで ある場合は、SQLForeignKeys() は指定した表の主キーと、 その表を参照する (他の表に入っている) すべての外部キーが入っている 結果セットを戻します。
FKTableName に表の名前が入っていて、PKTableName が空ストリングで ある場合は、SQLForeignKeys() は指定した表にあるすべての 外部キーとそれらの外部キーが参照する (他の表にある) 主キーが入った結果セットを 戻します。
PKTableName と FKTableName の両方に表の名前が入っている 場合は、SQLForeignKeys() は PKTableName に指定されている 表の主キーを参照する、FKTableName に指定された表の中にある外部キーを 戻します。このキーは、1 つのはずです。
主キーに関連付けられた外部キーが要求されると、結果セットは FKTABLE_NAME および ORDINAL_POSITION 順に配列されます。 外部キーに関連付けられた主キーが要求されると、結果セットは PKTABLE_NAME および ORDINAL_POSITION 順に配列されます。
カタログ関数結果セットの VARCHAR 列は、SQL92 の制限と一貫性を持たせるために 最大長属性 128 で宣言されています。
将来のリリースで新規の列が追加されたり、既存の列の名前が変更されても、 現在の列の位置は変わりません。
結果セットには、以下の列が含まれています
DB2 CLI が使用する列名は、X/Open CLI CAE 仕様のスタイルに準拠しています。 列のタイプ、内容、順序は、ODBC で SQLForeignKeys() 結果セット用に 定義されているものと同じです。
戻りコード
診断
SQLSTATE | 説明 | 解説 |
---|---|---|
24000 | カーソル状態が無効。 | カーソルがすでにこのステートメント・ハンドルでオープンされている。 |
40003 08S01 | 通信リンク障害。 | 関数の完了前に、アプリケーションとデータ・ソース間の通信リンクに障害が生じた。 |
HY001 | メモリーの割り振りの失敗。 | DB2 CLI が、関数の実行または完了のサポートに必要なメモリーを 割り当てることができない。 |
HY009 | 無効な引き数値。 | 引き数 PKTableName と FKTableName がともに ヌル・ポインターである。 |
HY010 | 関数のシーケンス・エラー。 | 実行時データ (SQLPrepare() または SQLExecDirect()) の操作中に、 関数が呼び出された。 |
HY014 | ハンドル数の限界に到達済み。 | 内部リソースが原因で、DB2 CLI がハンドルを割り当てることができない。 |
HY090 | 無効なストリング長またはバッファー長。 | 名前の長さ引き数のいずれかの値が、ゼロより小であるが、SQL_NTS と等しくない。 |
制約事項
なし。
関連した解説