CLI の手引きおよび解説書

SQLDataSources - データ・ソースのリストを入手する

目的


仕様: 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);

関数引き数

表 44. SQLDataSources 引き数
データ・タイプ 引き数 使用法 説明
SQLHENV EnvironmentHandle 入力 環境ハンドル
SQLUSMALLINT Direction 入力 アプリケーションはこれを使用して、リスト内の最初のデータ・ソース名を要求するか、またはリスト内の次のデータ・ソース名を要求します。 Direction は、以下の値のどちらかです。
  • SQL_FETCH_FIRST
  • SQL_FETCH_NEXT
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 も同じようにします。

戻りコード

診断

表 45. SQLDataSources SQLSTATE
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 に等しい値ではありませんでした。

許可

なし。

CLI サンプル ininfo.c

(ここで完全サンプル ininfo.c を使用することもできます 。)

/* From the CLI sample ININFO.C */
/* ... */
    sqlrc = SQLDataSources( henv,
                            SQL_FETCH_NEXT,
                            dbAliasBuf,
                            SQL_MAX_DSN_LENGTH + 1,
                            &aliasLen,
                            dbCommentBuf,
                            255,
                            &commentLen );
    
 

参照

なし。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]