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 */
関数引数
データ・タイプ | 引数 | 使用 | 説明 |
---|---|---|---|
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
診断
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.