Posted on 2009-06-22 15:06
Prayer 閱讀(1956)
評論(0) 編輯 收藏 引用 所屬分類:
DB2CLI
http://publib.boulder.ibm.com/iseries/v5r2/ic2989/index.htm?info/cli/rzadpmst99.htm
用途
SQLSetConnectAttr() 設置特定連接的連接屬性。
語法
SQLRETURN SQLSetConnectAttr (SQLHDBC hdbc,
SQLINTEGER fAttr,
SQLPOINTER vParam,
SQLINTEGER sLen);
函數自變量
表 146. SQLSetConnectAttr 自變量
數據類型 |
自變量 |
使用 |
描述 |
SQLHDBC |
hdbc |
輸入 |
連接句柄 |
SQLINTEGER |
fAttr |
輸入 |
要設置的連接屬性,有關更多信息,請參考表 147。 |
SQLPOINTER |
vParam |
輸入 |
與 fAttr 相關聯的值。根據選項的不同,這可以是指向 32 位整數值的指針,也可以是字符串。 |
SQLINTEGER |
sLen |
輸入 |
如果輸入值是字符串的話,此自變量就是它的長度;否則不使用此自變量。 |
用法
通過 SQLSetConnectAttr() 設置的所有連接和語句選項都將持續到調用 SQLFreeConnect() 或下次調用 SQLSetConnectAttr() 時為止。
通過 vParam 設置的信息的格式取決于所指定的 fAttr。選項信息可以是 32 位整數,也可以是指向以空終止的字符串的指針。
表 147. 連接選項
fAttr |
內容 |
SQL_ATTR_AUTOCOMMIT |
32 位的值,它設置連接的落實行為。可能的值列示如下:
- SQL_TRUE — 在執行 SQL 語句時自動落實每個 SQL 語句。
- SQL_FALSE — 不自動落實 SQL 語句。如果在具有落實控制的環境下運行,則必須使用 SQLEndTran() 或 SQLTransact() 來顯式地落實或回滾更改。
|
SQL_ATTR_COMMIT 或 SQL_TXN_ISOLATION
|
32 位的值,它設置 hdbc 所引用的當前連接的事務隔離級別。DB2 UDB CLI 接受下列值,但每個服務器都可能只支持這些隔離級別的其中某一些:
- SQL_TXN_NO_COMMIT — 未使用落實控制。
- SQL_TXN_READ_UNCOMMITTED — 臟讀取、不可重復讀取和幻象讀取是有可能的。
- SQL_TXN_READ_COMMITTED — 臟讀取是不可能的。不可重復讀取和幻象讀取是有可能的。
- SQL_TXN_REPEATABLE_READ — 臟讀取和不可重復讀取是不可能的。幻象讀取是有可能的。
- SQL_TXN_SERIALIZABLE — 事務是可序列化的。臟讀取、不可重復讀取和幻象都是不可能的。
在 IBM 術語中:
- SQL_TXN_READ_UNCOMMITTED 是指“未落實的讀取”;
- SQL_TXN_READ_COMMITTED 是指“游標穩定性”;
- SQL_TXN_REPEATABLE_READ 是指“讀取穩定性”;
- SQL_TXN_SERIALIZABLE 是指“可重復讀取”。
有關“隔離級別”的詳細說明,請參考 IBM SQL Reference。
應該在調用 SQLConnect() 之前設置 SQL_ATTR_COMMIT 屬性。如果在建立連接之后更改了值,并且該連接是與遠程數據源的連接,則在下一次對連接句柄成功調用 SQLConnect() 之前,此更改不會生效。
|
SQL_ATTR_DATE_FMT |
32 位的整數值,這個值可以是:
- SQL_FMT_ISO — 使用“國際標準化組織”(ISO)日期格式 yyyy-mm-dd。這是缺省值。
- SQL_FMT_USA — 使用美國日期格式 mm/dd/yyyy。
- SQL_FMT_EUR — 使用歐洲日期格式 dd.mm.yyyy。
- SQL_FMT_JIS — 使用“日本工業標準”日期格式 yyyy-mm-dd。
- SQL_FMT_MDY — 使用日期格式 mm/dd/yyyy。
- SQL_FMT_DMY — 使用日期格式 dd/mm/yyyy。
- SQL_FMT_YMD — 使用日期格式 yy/mm/dd。
- SQL_FMT_JUL — 使用儒略日期格式 yy/ddd。
- SQL_FMT_JOB — 使用作業缺省值。
|
SQL_ATTR_DATE_SEP |
32 位的整數值,這個值可以是:
- SQL_SEP_SLASH — 使用斜杠(/)作為日期分隔符。這是缺省值。
- SQL_SEP_DASH — 使用破折號(-)作為日期分隔符。
- SQL_SEP_PERIOD — 使用句點(.)作為日期分隔符。
- SQL_SEP_COMMA — 使用逗號(,)作為日期分隔符。
- SQL_SEP_BLANK — 使用空格作為日期分隔符。
- SQL_SEP_JOB — 使用作業缺省值。
|
SQL_ATTR_DBC_DEFAULT_LIB |
一個字符值,這個值指示將用于解析未限定文件引用的缺省庫。如果連接正在使用系統命名方式,則此項無效。 |
SQL_ATTR_DBC_SYS_NAMING |
32 位的整數值,這個值可以是:
- SQL_TRUE — DB2 UDB CLI 使用 iSeries 系統命名方式。使用斜杠(/)定界符來限定文件。使用作業的庫列表來解析未限定的文件。
- SQL_FALSE — DB2 UDB CLI 使用缺省命名方式,即 SQL 命名。使用句點(.)定界符來限定文件。使用缺省庫或當前用戶標識來解析未限定的文件。
|
SQL_ATTR_DECIMAL_SEP |
32 位的整數值,這個值可以是:
- SQL_SEP_PERIOD — 使用句點(.)作為小數分隔符。這是缺省值。
- SQL_SEP_COMMA — 使用逗號(,)作為日期分隔符。
- SQL_SEP_JOB — 使用作業缺省值。
|
SQL_ATTR_EXTENDED_COL_INFO |
32 位的整數值,這個值可以是:
- SQL_TRUE — 可以在 SQLColAttributes() 上使用對此連接句柄分配的語句句柄來檢索擴展的列信息,如“基本表”、“基本模式”、“基本列”和“標號”。
- SQL_FALSE — 不能在 SQLColAttributes() 函數上使用對此連接句柄分配的語句句柄來檢索擴展的列信息。這是缺省值。
|
SQL_ATTR_TIME_FMT |
32 位的整數值,這個值可以是:
- SQL_FMT_ISO — 使用“國際標準化組織”(ISO)時間格式 hh.mm.ss。這是缺省值。
- SQL_FMT_USA — 使用美國時間格式 hh:mmxx,其中 xx 是 AM 或 PM。
- SQL_FMT_EUR — 使用歐洲時間格式 hh.mm.ss。
- SQL_FMT_JIS — 使用“日本工業標準”時間格式 hh:mm:ss。
- SQL_FMT_HMS — 使用 hh:mm:ss 格式。
|
SQL_ATTR_TIME_SEP |
32 位的整數值,這個值可以是:
- SQL_SEP_COLON — 使用冒號(:)作為時間分隔符。這是缺省值。
- SQL_SEP_PERIOD — 使用句點(.)作為時間分隔符。
- SQL_SEP_COMMA — 使用逗號(,)作為時間分隔符。
- SQL_SEP_BLANK — 使用空格作為時間分隔符。
- SQL_SEP_JOB — 使用作業缺省值。
|
SQL_SAVEPOINT_NAME |
一個字符值,它指示 SQLEndTran() 要對函數 SQL_SAVEPOINT_NAME_ROLLBACK 或 SQL_SAVEPOINT_NAME_RELEASE 使用的保存點名稱。 |
SQL_2ND_LEVEL_TEXT |
32 位的整數值,這個值可以是:
- SQL_TRUE — 通過調用 SQLError() 獲取的錯誤文本將包含關于錯誤的完整文本描述。
- SQL_FALSE — 通過調用 SQLError() 獲取的錯誤文本將只包含關于錯誤的第一個級別的描述。這是缺省值。
|
返回碼
- SQL_SUCCESS
- SQL_SUCCESS_WITH_INFO
- SQL_ERROR
- SQL_INVALID_HANDLE
診斷
表 148. SQLSetConnectAttr SQLSTATE
SQLSTATE |
描述 |
說明 |
HY001 |
內存分配失敗 |
驅動程序無法分配支持此函數的執行或完成所必需的內存。 |
HY009 |
自變量值無效 |
給定 fAttr 值,對自變量 vParam 指定了無效的值。
指定了無效的 fAttr 值。
|