識別子の引数
識別子引数の文字列が引用符で囲まれている場合、ドライバーは先頭と末尾の空白を削除し、引用符内の文字列をリテラルで処理します。 文字列が引用符で囲まれていない場合、ドライバーは末尾の空白を削除し、文字列を大文字に折りたたみます。 識別子引数を null ポインターに設定すると、SQL_ERRORと SQLSTATE HY009 が返されます (null ポインターの使用は無効です)。ただし、引数がカタログ名であり、カタログがサポートされていない場合を除きます。
SQL_ATTR_METADATA_ID ステートメント属性が SQL_TRUE に設定されている場合、これらの引数は識別子引数として扱われます。 この場合、アンダースコア (_) とパーセント記号 (%) は、検索パターン文字としてではなく、実際の文字として扱われます。 この属性が SQL_FALSE に設定されている場合、これらの引数は引数に応じて通常の引数またはパターン引数として扱われます。
特殊文字を含む識別子は SQL ステートメントで引用符で囲む必要がありますが、カタログ関数に渡される引用符文字はリテラルで解釈されるため、カタログ関数の引数として渡されるときに引用符で囲む必要はありません。 たとえば、識別子の引用符文字 (ドライバー固有であり、SQLGetInfo を介して返される) が二重引用符 (") であるとします。 SQLTables の最初の呼び出しは買掛金勘定テーブルに関する情報を含む結果セットを返しますが、2 回目の呼び出しでは "買掛金勘定" テーブルに関する情報が返されます。これは意図したものではありません。
SQLTables(hstmt1, NULL, 0, NULL, 0, "Accounts Payable", SQL_NTS, NULL, 0);
SQLTables(hstmt2, NULL, 0, NULL, 0, "\"Accounts Payable\"", SQL_NTS, NULL, 0);
引用符で囲まれた識別子は、真の列名と同じ名前の擬似列 (Oracle の ROWID など) を区別するために使用されます。 カタログ関数の引数に "ROWID" が渡された場合、その関数は ROWID 擬似列が存在する場合は処理します。 擬似列が存在しない場合、関数は "ROWID" 列で動作します。 カタログ関数の引数に ROWID が渡された場合、この関数は ROWID 列で動作します。
識別子の詳細については、「引用符で囲まれた識別子」に関するページを参照してください。