我有一个很长的SQL语句,基本上是:
with a as (select * from t1),
b as (select * from a, t2 where a.id=t2.id)
select * from b
这个语句在我的TOAD应用程序中执行得非常好。但是,当我尝试将上述内容填充到字符串变量中并使用以下命令在ASP中运行时
set rs = objConn.execute(strSQL)
我收到以下错误:
Microsoft OLE DB Provider for ODBC Drivers错误'80040e37'
[Microsoft] [Oracle的ODBC驱动程序] [Oracle] ORA-00942:表或视图不存在
/Application/xxxxx/yyyyy/myfilename.asp,第168行
第168行是设置rs = objConn.execute(strSQL)行。
我已经使用这些相同的表来运行其他几个查询并使用set rs = objConn.execute(strSQL)行在线发布它们没有问题。我唯一可以确定的是,这个SQL查询是子查询因子。
我尝试将整个查询包装在它自己的select语句中,如:
select * from (with a as blah blah... entire original query)
但是仍然会引发同样的错误。我可以不使用set
rs = objConn.execute(strSQL)
与子查询因子结合?这不受支持吗?或者是否有某种工作?或者它可能是完全不同的东西?
感谢。
答案 0 :(得分:1)
答案 1 :(得分:0)
用于ODBC驱动程序的Microsoft OLE DB提供程序非常旧。它是在Oracle 7出现时创建的,并且从那时起就没有真正更新过。 WITH子句随Oracle 9.2一起添加。
我很惊讶您的select * from ()
解决方法不起作用。这正是我们正在使用的,它对我们来说很好。
另一种解决方案是使用Oracle Provider for OLE DB
而不是Microsoft驱动程序。它由Oracle提供,并随每个Oracle版本更新。