SQLNativeSql 関数 (CLI)-ネイティブ SQL テキストの取得

CLI がベンダー・エスケープ文節を解釈する方法を示します。 アプリケーションによって渡された元の SQL ストリングにベンダー・エスケープ文節シーケンスが含まれていた場合、 CLI は、データ・ソースに表示される変換済み SQL ストリングを戻します (必要に応じて、ベンダー・エスケープ文節が変換または破棄されます)。

仕様:

  • CLI 2.1
  • ODBC 1.0
等価 Unicode: この関数は、Unicode 文字セットとともに使用することもできます。 これに対応する Unicode 関数は SQLNativeSqlW() です。 ANSI 関数から Unicode 関数へのマッピングについては、 Unicode 関数 (CLI) を参照してください。

構文

SQLRETURN   SQLNativeSql     (
               SQLHDBC           ConnectionHandle,  /* hdbc */
               SQLCHAR           *InStatementText,  /* szSqlStrIn */
               SQLINTEGER        TextLength1,       /* cbSqlStrIn */
               SQLCHAR           *OutStatementText, /* szSqlStr */
               SQLINTEGER        BufferLength,      /* cbSqlStrMax */
               SQLINTEGER        *TextLength2Ptr);  /* pcbSqlStr */

関数引数

表 1. SQLNativeSql 引数
データ・タイプ 引数 使用 説明
SQLHDBC ConnectionHandle input 接続ハンドル
SQLCHAR * InStatementテキスト input 入力 SQL ストリング。
SQLINTEGER TextLength1 input InStatementText を格納するのに必要な SQLCHAR エレメント (またはこの関数の Unicode 版の場合は SQLWCHAR エレメント) の数。
SQLCHAR * OutStatementテキスト 出力 変換済み出力ストリングのバッファーを指すポインター。
SQLINTEGER BufferLength input OutStatementText を格納するのに必要な SQLCHAR エレメント (またはこの関数の Unicode 版の場合は SQLWCHAR エレメント) の数。
SQLINTEGER * TextLength2Ptr 出力 OutStatementText に戻すために使用できる SQLCHAR エレメント (この関数の Unicode 版の場合は SQLWCHAR エレメント) の合計数 (NULL 終止符文字を除く)。 戻り値に使用できる SQLCHAR エレメントの数 (この関数の Unicode 版の場合は SQLWCHAR エレメントの数) が BufferLength 以上の場合、OutStatementText 内の出力 SQL ストリングは、 SQLCHAR または SQLWCHAR のエレメント数 BufferLength -1 個分に切り捨てられます。

使用法

この関数は、アプリケーションが、 CLIによってデータ・ソースに渡される変換済み SQL ストリングを検査または表示したい場合に呼び出されます。 変換 (マッピング) は、 入力 SQL ステートメント・ストリングにベンダー・エスケープ節シーケンス列が入っているときしか行われません。

CLI は、 SQLNativeSql() が呼び出されたときにのみ、ベンダー・エスケープ節の構文エラーを検出できます。 CLI は、変換された SQL ストリングを準備のためにデータ・ソースに渡さないため、DBMS によって検出された構文エラーはこの時点では生成されません。 (ステートメントが準備のためにデータ・ソースへ渡されないのは、 その準備によりトランザクションが開始される可能性があるからです。)

戻りコード

  • SQL_SUCCESS
  • SQL_SUCCESS_WITH_INFO
  • SQL_ERROR
  • SQL_INVALID_HANDLE

診断

表 2. SQLNativeSql SQLSTATE
SQLSTATE 説明 説明
01004 (英語) データが切り捨てられました。 バッファー OutStatementText の容量が不足しており、 SQL ストリング全体を入れることができなかったため、 ストリングを切り捨てました。 引数 TextLength2Ptr に、 切り捨てられていない SQL ストリングの全長が含まれています。 (関数は、SQL_SUCCESS_WITH_INFO で戻ります。)
08003 (英語) 接続がクローズされています。 ConnectionHandle は、オープン・データベース接続を参照していません。
37000 SQL 構文が無効です。 InStatementText にある入力 SQL ストリングに構文エラーがありました。
HY001 メモリーの割り振りが失敗しました。 Db2® CLI は、関数の実行または完了をサポートするために必要なメモリーを割り振ることができません。 プロセス・レベルのメモリーがアプリケーション・プロセスに使い尽くされた可能性があります。 プロセス・レベルのメモリー制限については、オペレーティング・システムの構成を調べてください。
HY (英語)009 引数の値が無効です。 引数 InStatementText は NULL ポインターです。

引数 OutStatementText は NULL ポインターです。

HY090 ストリングまたはバッファーの長さが無効です。 引数 TextLength1 は 0 より小さく、SQL_NTS と等しくありませんでした。

引数 BufferLength は、0 より小さい値でした。

制約事項

None.