读书人

关于ADOQuery创设SQL临时表的怪现象

发布时间: 2013-01-01 14:04:19 作者: rapoo

关于ADOQuery创建SQL临时表的怪现象,求解释!
ADOQuery1和ADOQuery2的Connection是一样的
现象一:ADOQuery2不可以访问ADOQuery1创建的临时表#test


现象二的结果是关于ADOQuery创设SQL临时表的怪现象,求解释
特别显眼的是现象一中Name怎么不是类似二那样#test__……的呢?当然也注意到他们的xtype不一样,但不懂
另外,是否有办法使得ADOQuery2能访问现象一中的已经创建的#test呢?
[解决办法]
你这种情况不如建一个储存过程。或直接建视图或ADOQUERY中查询语句复杂点就可了,你那样用系统可能不稳定。
[解决办法]
创建视图是一个比较好的解决办法
[解决办法]
为什么要用临时表呢?如果LZ用的是sql server的话,可以在服务器端写自定义函数来创建虚拟表。
[解决办法]
方法1得到的执行方式是:exec sp_executesql N'...', N'@P1 varchar(4)', '0001'
实际上ADOQuery2执行时,已经在不同的session里面了,所以找不到这个对象,方法2完全是同一个session里面的,所以正常,方法2很常规的做法,不觉得有什么问题。
[解决办法]
楼上解释得很清楚了。

但是,不大同意“钻牛角尖”一说,因为弄通一个问题,是一回事,怎么使用又是另一回事,如果大家都不“钻牛角尖”了,写出来的代码都一样,就不存在差异了。事实上,往往是使用的方式方法不同,想的点子不同,效果或会相去甚远。技巧,有时也是“钻”出来的。

读书人网 >.NET

热点推荐