ORA-01762: vopdrv: FROM 中没有视图查询块处理

博客介绍了在Oracle数据库中遇到的ORA-01762错误,该错误通常出现在使用Common Table Expression (CTE)时,因在FROM子句中未使用到CTE定义的查询块。文章提到了错误产生的原因和解决方法,并讨论了CTE在SQL查询中的用途,包括递归查询、代码复用和提高查询可读性。此外,还分享了CTE相对于子查询和表变量的优势,以及WITH AS短语在优化查询性能上的作用。
摘要由CSDN通过智能技术生成

执行代码:with as 写法

错误如下:ORA-01762 – vopdrv: view query block not in FROM

报错原因:由于with 中定义的查询,在后面没有用到,所以报错了,因为在写语句时,是一段一段写的,每写一段,就运行一段,一开始并没有报错(只运行了最后一段),但是越写越多时就报错了,在oracle 11g r2的环境,感觉是个bug。

解决方法:在最后的语句中用到了所有在with中定义的语句,就不报错了。
 

参考网友的

1. alter session set "_eliminate_common_subexpr"=false,设置 true 或者false不起效

2.采用传统的plus notation  (+) 来代替JOIN 的写法,也不起效

 

拓展下:

CTE(Common Table Expression) 公用表表达式,它是在单个语句的执行范围内定义的临时结果集,只在查询期间有效。它可以自引用,也可在同一查询中多次引用,实现了代码段的重复利用。

CTE最大的好处是提升T-Sql代码的可读性,可以更加优雅简洁的方式实现递归等复杂的查询。

CTE可用于:
  ⒈ 创建递归查询,这个应该是CTE最好用的地方
  ⒉ 在同一语句中多次引用生成的表
  3. 减少子查询和表变量,提高执行效率

CTE优点:
  1. 使用 CTE 可以获得提高可读性和轻松维护复杂查询的优点。同时ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值