仕様: | DB2 CLI 1.1 | ODBC 1.0 | ISO CLI |
SQLDataSources() は、一度に 1 回ずつターゲット・データベースのリストを返します。データベースを使用できるようにカタログ化する必要があります。カタログ化の詳細については、第 4 章, CLI の構成およびサンプル・アプリケーションの実行を参照してください。
SQLDataSources() は、通常、接続が行われる前に呼び出されて、接続に使用できるデータベースを判別します。
構文
SQLRETURN SQLDataSources (SQLHENV EnvironmentHandle, SQLUSMALLINT Direction, SQLCHAR FAR *ServerName, SQLSMALLINT BufferLength1, SQLSMALLINT FAR *NameLength1Ptr, SQLCHAR FAR *Description, SQLSMALLINT BufferLength2, SQLSMALLINT FAR *NameLength2Ptr);
関数引き数
データ・タイプ | 引き数 | 使用法 | 説明 |
---|---|---|---|
SQLHENV | EnvironmentHandle | 入力 | 環境ハンドル |
SQLUSMALLINT | Direction | 入力 | アプリケーションはこれを使用して、リスト内の最初のデータ・ソース名を要求するか、またはリスト内の次のデータ・ソース名を要求します。
Direction は、以下の値のどちらかです。
|
SQLCHAR * | ServerName | 出力 | 取り出したデータ・ソース名を入れておくバッファーを指すポインター。 |
SQLSMALLINT | BufferLength1 | 入力 | ServerName で指示されるバッファーの最大長。これは、SQL_MAX_DSN_LENGTH + 1 以下でなければなりません。 |
SQLSMALLINT * | NameLength1Ptr | 出力 | ServerName に返すのに使用できる最大バイト数を保管する場所を指すポインター。 |
SQLCHAR * | Description | 出力 | データ・ソースの記述が返されるバッファーを指すポインター。 DB2 CLI は、 DBMS にカタログ作成されたデータベースに関連した注釈 フィールドを返します。 |
SQLSMALLINT | BufferLength2 | 入力 | Description バッファーの最大長。 |
SQLSMALLINT * | NameLength2Ptr | 出力 | 関数が、データ・ソースの記述を返すのに使用できる実際のバイト数を返す場所を指すポインター。 |
使用法
アプリケーションは、 SQL_FETCH_FIRST または SQL_FETCH_NEXT のいずれかに設定された Direction を使用して、いつでもこの関数を呼び出すことができます。
SQL_FETCH_FIRST を指定すると、常にリスト内の最初のデータベースが返されます。
SQL_FETCH_NEXT を指定すると、以下のようになります。
ODBC 環境では、ODBC ドライバー・マネージャーがこの関数を実行します。詳細については、付録 C, DB2 CLI と ODBC を参照してください。
IBM RDBMS は常にデータ・ソースの記述 (30 バイトになるまでブランク埋め込み) を返すので、 DB2 CLI も同じようにします。
戻りコード
診断
SQLSTATE | 説明 | 解説 |
---|---|---|
01004 | データが切り捨てられました。 | 引き数 ServerName に返されたデータ・ソース名が、引き数 BufferLength1 に指定した値よりも長い値でした。引き数 NameLength1Ptr には、完全データ・ソース名の長さが含まれています。
(関数は、SQL_SUCCESS_WITH_INFO を戻します。)
引き数 Description に返されたデータ・ソース名が、引き数 BufferLength2 に指定した値よりも長い値でした。引き数 NameLength2Ptr には、完全データ・ソース記述の長さが含まれています。 (関数は、SQL_SUCCESS_WITH_INFO を戻します。) |
58004 | 予期しないシステム障害です。 | 回復不能システム・エラー。 |
HY000 | 一般的なエラーです。 | 特定の SQLSTATE が存在しなかったり、定義されなかった場合のエラーが発生しました。引き数 ErrorMsg 内の SQLError() から返されたエラー・メッセージに、そのエラーと原因が記述されています。 |
HY001 | メモリーの割り振り失敗です。 | DB2 CLI は、関数の実行または完了をサポートするのに必要なメモリーを割り振ることができません。 |
HY013 | 予期しないメモリーのハンドル・エラーが起きました。 | DB2 CLI は、関数の実行または完了をサポートするのに必要なメモリーを使用することができませんでした。 |
HY090 | ストリングまたはバッファー長が無効です。 | 引き数 BufferLength1 に指定された値は、0 より小さい値でした。
引き数 BufferLength2 に指定された値は、0 より小さい値でした。 |
HY103 | 方向オプションが範囲外です。 | 引き数 Direction に指定された値は、 SQL_FETCH_FIRST または SQL_FETCH_NEXT に等しい値ではありませんでした。 |
許可
なし。
(ここで完全サンプル ininfo.c を使用することもできます 。)
/* From the CLI sample ININFO.C */ /* ... */ sqlrc = SQLDataSources( henv, SQL_FETCH_NEXT, dbAliasBuf, SQL_MAX_DSN_LENGTH + 1, &aliasLen, dbCommentBuf, 255, &commentLen );
参照