一下结论针对版本ASE:
Adaptive Server Enterprise/12.5.3/EBF 12146/P/RS6000/AIX 5.1/ase125x/1883/64-bi
t/FBO/Thu Nov 11 22:31:37 2004
首先我们认为 EXEC SQL SELECT @@tranchained ;能够得到当前连接是否是处在"chained"
EXEC SQL SELECt @@trancount 能够得到现在当前是否处于事务中。
经过测试
EXEC SQL connect :username IDENTIFIED BY :pwd;
printf("connect return [%d]\n", sqlca.sqlcode );
nCount = 0;
EXEC SQL select @@trancount INTO :nCount;
printf("after , select return [%d], nTranCount[%d]\n", sqlca.sqlcode, nCount );
EXEC SQL select @@tranchained INTO :nChained;
printf("before select return [%d], nChained[%d]\n", sqlca.sqlcode, nChained );
输出:
connect return [0]
after , select return [0], nTranCount[1]
before select return [0], nChained[0]
说明connect数据库后就默认处于事务中(我们认为chained 起作用了), 可是这时的tranchained 居然为 0, 不开启,是在让人头疼。。
当然针对isql 的交换来说不是这个样子的:
1> select @@tranchained
2> go
-----------
0
(1 row affected)
1> select @@trancount
2> go
-----------
0
(1 row affected)
1>
目前的实验结论是:
isql工具默认chained是off的, 我们自己程序的连接后默认是 on的,但是不能同坐@@tranchained 变量显示出来。
当然,如果显示的设置 EXEC SQL SET CHAINED ON|OFF 后, @@tranchained 变量时能正确反映的。
阅读(1782) | 评论(0) | 转发(0) |