CLI の手引きおよび解説書

SQLNativeSql - ネイティブの SQL テキストを入手する

目的


仕様: DB2 CLI 2.1 ODBC 1.0  

SQLNativeSql() は、 DB2 CLI がベンダー・エスケープ文節を解釈する方法を表示するために使用します。アプリケーションから渡された元の SQL ストリングにベンダー・エスケープ文節順序列が含まれていた場合、 DB2 CLI はデータ・ソースによって参照される変換後の SQL ストリングを戻します。 (ベンダー・エスケープ文節は適宜変換されるかまたは破棄されるかのどちらかです。)

構文

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

関数引き数


表 126. SQLNativeSql 引き数
データ・タイプ 引き数 使用法 説明
SQLHDBC ConnectionHandle 入力 接続ハンドル。
SQLCHAR * InStatementText 入力 入力 SQL ストリング。
SQLINTEGER TextLength1 入力 InStatementText の長さ。
SQLCHAR * OutStatementText 出力 変換済み出力ストリングのバッファーを指すポインター。
SQLINTEGER BufferLength 入力 OutStatementText が指すバッファーのサイズ。
SQLINTEGER * TextLength2Ptr 出力 OutStatementText 内に戻すために使用できる総バイト数 (ヌル終止符を除く)。戻りに使用できるバイト数が BufferLength 以上の場合は、 OutStatementText 内の出力 SQL ストリングが BufferLength - 1 バイトに切り捨てられます。

使用法

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

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

戻りコード

診断


表 127. SQLNativeSql SQLSTATE
SQLSTATE 説明 解説
01004 データが切り捨てられました。 バッファー OutStatementText の容量が不足しており、 SQL ストリング全体を入れることができなかったため、ストリングを切り捨てました。引き数 TextLength2Ptr に、切り捨てられていない SQL ストリングの全長が含まれています。 (関数は、SQL_SUCCESS_WITH_INFO を戻します。)
08003 接続がクローズされています。 ConnectionHandle は、オープン・データベース接続を参照していません。
37000 SQL 構文が無効です。 InStatementText にある入力 SQL ストリングに構文エラーがありました。
HY001 メモリーの割り振り失敗です。 DB2 CLI は、関数の実行または完了をサポートするのに必要なメモリーを割り振ることができません。
HY009 引き数値が無効です。 引き数 InStatementText はヌル・ポインターです。

引き数 OutStatementText はヌル・ポインターです。

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

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

制約

なし。

CLI サンプル dbnative.c

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

/* From the CLI sample DBNATIVE.C */
/* ... */
    SQLNativeSql(hdbc, inODBCStmt, SQL_NTS, outDbStmt, 1024, &dbStmtLen);
    HANDLE_CHECK( SQL_HANDLE_DBC, hdbc, sqlrc, &henv, &hdbc ) ;
    if ( dbStmtLen == SQL_NULL_DATA ) printf( "Invalid ODBC statement\n" ) ;
    else {
       printf( "\n   the data source specific format is:\n   %s\n", outDbStmt);
    }
 
 

参照


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