CLI の手引きおよび解説書

SQLGetCursorName - カーソル名の入手

目的


仕様: DB2 CLI 1.1 ODBC 1.0 ISO CLI

SQLGetCursorName() は、入力ステートメント・ハンドルに関連したカーソル名を返します。 SQLSetCursorName() を呼び出してカーソル名を明示設定すると、このカーソル名が返されます。それ以外の場合は暗黙生成された名前が返されます。

構文

SQLRETURN   SQLGetCursorName (
                SQLHSTMT          StatementHandle,   /* hstmt */
                SQLCHAR      *FAR CursorName,        /* szCursor */
                SQLSMALLINT       BufferLength,      /* cbCursorMax */
                SQLSMALLINT  *FAR NameLengthPtr);    /* pcbCursor */

関数引き数

表 92. SQLGetCursorName 引き数
データ・タイプ 引き数 使用法 説明
SQLHSTMT StatementHandle 入力 ステートメント・ハンドル
SQLCHAR * CursorName 出力 カーソル名。
SQLSMALLINT BufferLength 入力 バッファー CursorName の長さ。
SQLSMALLINT * NameLengthPtr 出力 CursorName に返すために利用可能なバイト数。

使用法

SQLGetCursorName() は、 SQLSetCursorName() に明示的に設定されたカーソル名を返すか、または名前が設定されていない場合は、DB2 CLI によって内部で生成されたカーソル名を返します。

SQLSetCursorName() を使用して名前を明示設定すると、ステートメントを除去するか、別の明示的な名前を設定するまで、この名前が返されます。

内部で生成されたカーソル名は、常に SQLCUR または SQL_CUR で始まります。カーソル名は常に 18 文字以下であり、接続で常に固有です。

戻りコード

診断

表 93. SQLGetCursorName SQLSTATE
SQLSTATE 説明 解説
01004 データが切り捨てられました。 CursorName 内に返されたカーソル名は BufferLength 内の値より長かったので、 BufferLength - 1 バイトに切り捨てられます。引き数 NameLengthPtr には、戻りに使用できる完全カーソル名の長さが含まれています。関数は、 SQL_SUCCESS_WITH_INFO を返します。
40003 08S01 通信リンクに障害が起きました。 アプリケーションとデータ・ソースとの間の通信リンクが、関数の完了する前に失敗しました。
58004 予期しないシステム障害です。 回復不能システム・エラー。
HY001 メモリーの割り振り失敗です。 DB2 CLI は、関数の実行または完了をサポートするのに必要なメモリーを割り振ることができません。
HY010 関数の順序エラーです。

実行時データ (SQLParamData()SQLPutData()) 操作中に、関数が呼び出されました。

BEGIN COMPOUND と END COMPOUND SQL の操作中に、関数が呼び出されました。

非同期実行関数 (この関数ではない) が StatementHandle で呼び出され、この関数は、呼び出し時に依然実行中でした。

HY013 予期しないメモリーのハンドル・エラーが起きました。 DB2 CLI は、関数の実行または完了をサポートするのに必要なメモリーを使用することができませんでした。
HY090 ストリングまたはバッファー長が無効です。 引き数 BufferLength に指定された値は 0 より小さい値です。

制約

ODBC 生成のカーソル名は SQL_CUR で始まり、 DB2 CLI 生成のカーソル名は SQLCUR で始まり、 X/Open CLI 生成のカーソル名は SQLCUR または SQL_CUR で始まります。

CLI サンプル tbmod.c

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

/* From the CLI sample TBMOD.C */
/* ... */
    /* get the cursor name of the SELECT statement */
    sqlrc = SQLGetCursorName( hstmtSelect, 
                              cursorName, 20, &cursorLen ) ;
    
 

参照


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