適合 性
導入バージョン:ODBC 3.0 規格準拠:ISO 92
Summary
SQLGetEnvAttr は環境属性の現在の設定を返します。
構文
SQLRETURN SQLGetEnvAttr(
SQLHENV EnvironmentHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER BufferLength,
SQLINTEGER * StringLengthPtr);
引数
EnvironmentHandle
[入力]環境の取り扱い。
属性
[入力]取得する属性。
ValuePtr
[出力]属性 で指定された属性の現在の値を返すためのバッファへのポインタ。
ValuePtr が NULL の場合、StringLengthPtr は ValuePtr が指すバッファ内で返せる合計バイト数(文字データの null 終端文字を除く)を返します。
BufferLength
[入力]もし ValuePtr が文字文字列を指すなら、この引数は*ValuePtrの長さであるべきです。 *ValuePtr が整数の場合、 BufferLength は無視されます。 * ValuePtr がUnicode文字列( SQLGetEnvAttrWを呼び出す際)であれば、 BufferLength の引数は偶数でなければなりません。 属性値が文字列でない場合、 BufferLength は使われません。
StringLengthPtr
[出力]* ValuePtrで返せる(null終端文字を除く)合計バイト数を返すバッファへのポインタです。 属性値が文字文字列で、返す可能なバイト数が BufferLength以上であれば、*ValuePtr のデータはヌル終端文字の長さを引いた BufferLength に切り詰められ、ドライバーによってnull終端処理されます。
返品
SQL_SUCCESS、SQL_SUCCESS_WITH_INFO、SQL_NO_DATA、SQL_ERROR、SQL_INVALID_HANDLE。
Diagnostics
SQLGetEnvAttrがSQL_ERRORまたはSQL_SUCCESS_WITH_INFOを返すと、SQLGetDiagRecを呼び出し、HandleTypeをSQL_HANDLE_ENV、HandleをenvironmentHandleで呼び出すことで関連するSQLSTATE値を取得できます。 以下の表は 、SQLGetEnvAttr が通常返すSQLSTATE値を示し、それぞれをこの関数の文脈で説明しています。「(DM)」という表記は、ドライバーマネージャーが返すSQLstateの記述の前に記載されます。 特に明記されていない限り、各 SQLSTATE 値に関連付けられている戻りコードはSQL_ERROR。
| SQLSTATE | エラー | Description |
|---|---|---|
| 01000 | 一般的な警告 | ドライバー固有の情報メッセージ。 (関数はSQL_SUCCESS_WITH_INFOを返します。 |
| 01004 | 文字列データ、右切り捨て | *ValuePtr で返されたデータは、 BufferLength からnull-termination文字を引いたものに短縮されていました。 切り詰められていない文字列の値の長さは*StringLengthPtrで返されます。 (関数はSQL_SUCCESS_WITH_INFOを返します。 |
| HY000 | 一般的なエラー | 特定の SQLSTATE がなく、実装固有の SQLSTATE が定義されていないエラーが発生しました。 *MessageText バッファー内の SQLGetDiagRec によって返されるエラー メッセージには、エラーとその原因が記述されています。 |
| HY001 | メモリ割り当てエラー | ドライバーは、関数の実行または完了をサポートするために必要なメモリを割り当てませんでした。 |
| HY010 | 関数シーケンス エラー | (DM) SQL_ATTR_ODBC_VERSION はまだ SQLSetEnvAttrで設定されていません。 SQLAllocHandleStdを使っているなら、明示的にSQL_ATTR_ODBC_VERSIONを設定する必要はありません。 |
| HY013 | メモリ管理エラー | メモリが不足している可能性があるため、基になるメモリ オブジェクトにアクセスできなかったため、関数呼び出しを処理できませんでした。 |
| HY092 | 無効な属性/オプション識別子 | Attributeという引数に指定された値は、ドライバがサポートするODBCのバージョンでは有効ではありませんでした。 |
| HY117 | 不明なトランザクション状態のため、接続が中断されます。 切断関数と読み取り専用関数のみが許可されます。 | (DM) 中断状態の詳細については、「 SQLEndTran 関数を参照してください。 |
| HYC00 | 省略可能な機能が実装されていません | Attribute引数に指定された値は、ドライバがサポートしているがドライバではサポートされていないバージョンの有効なODBC環境属性でした。 |
| IM001 | ドライバーは、この関数をサポートしていません | (DM) EnvironmentHandle に対応するドライバはこの関数をサポートしていません。 |
Comments
属性の一覧については 、SQLSetEnvAttrを参照してください。 ドライバー固有の環境属性はありません。 Attributeが文字列を返す属性を指定する場合、ValuePtrは文字列を返すバッファへのポインタでなければなりません。 文字列の最大長(null終端バイトを含む)は BufferLength バイトとなります。
SQLGetEnvAttr は、割り当てから環境ハンドルの解放までの任意のタイミングで呼び出すことができます。 アプリケーションが環境に対して正しく設定したすべての環境属性は、HandleTypeのHandleをSQL_HANDLE_ENVでEnvironmentHandle上で呼び出しるまで保持されます。 ODBC 3*.x*では複数の環境ハンドルを同時に割り当てることができます。 ある環境の環境属性は、別の環境が割り当てられても影響を受けません。
Note
SQL_ATTR_OUTPUT_NTS環境属性は標準準拠アプリケーションでサポートされています。 SQLGetEnvAttrが呼び出されると、ODBC 3*.x*ドライバーマネージャーはこの属性に対して常にSQL_TRUEを返します。 SQL_ATTR_OUTPUT_NTSは SQLSetEnvAttrの呼び出しによってのみSQL_TRUEに設定できます。
関連関数
| ~についての情報 | 参照先 |
|---|---|
| 接続属性の設定を返す | SQLGetConnectAttr 関数 |
| ステートメント属性の設定を返す | SQLGetStmtAttr 関数 |
| 接続属性の設定 | SQLSetConnectAttr 関数 |
| 環境属性の設定 | SQLSetEnvAttr 함수 |
| ステートメント属性の設定 | SQLSetStmtAttr 関数 |