+ -
当前位置:首页 → 问答吧 → 内部查询处理器错误: 在查询优化过程中,查询处理器用尽了堆栈空间

内部查询处理器错误: 在查询优化过程中,查询处理器用尽了堆栈空间

时间:2011-08-19

来源:互联网

我有一个ASP页面,需要对两个在不同数据库中的表进行查询操作.这两个表所在数据库都是SQL SERVER2000
第一个数据库中的表假设为A,第二个数据库中的为B

我是想要做 select * from A where A.xx in (select B.xx from B where yy>1) 像这样的查询.
但是他们不在一个数据库中不能直接这样查

所以我是先把select B.xx from B where yy>1的结果保存到一个recordset中.然后遍历recordset,把所有的结果串成字符串
do while not rs.eof
 str = str&"'"&rs("xx")&"',"
rs.movenext
loop

然后再执行 "select * from A where A.xx in ("&str&")"
也就是说把B表查到的全部内容串在一起,写在第二个SQL语句中.

这样做,如果第一个SQL语句中查到的结果是几千条数据的话,第二个SQL语句可以正常执行.
但是第一个SQL查询的结果如果是几万条数据,那么第二句查询就会报错:
"内部查询处理器错误: 在查询优化过程中,查询处理器用尽了堆栈空间"

----------------------------------

1.请问上面的报错是不是因为SQL语句中串的字符太多了导致的呢?
2.有没有比较好一点的方法可以对在不同数据库中的两个表进行多表查询呢?

作者: number321   发布时间: 2011-08-19

select * from 库名..A where xx in (select xx from 库名..B where yy>1)

作者: gingerkang   发布时间: 2011-08-19