Posted on 2009-06-22 15:06
Prayer 阅读(1930)
评论(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 值。
|