关于Oracle11g设定兼容版本的命令

今天在Oracle11g的客户端上调试SQL,发现一个问题。
语句类似于:
Select * From
(
Select * From Table_A where A.c = '0'
)
Inner Join
(
Select * From Table_B where B.c = '1'
)
on A.d = B.d
其结果死活不对,其中Table_A和Table_B的c,d字段为Varchar2,但是A.c='0'在保证有对应数据的情况下一直没有检索到结果,反而把条件改为:
where A.c = 0
就可以正常运行,刚开始以为是两个结果集合中的d字段属性被改变,就在on条件中加上了to_char,再运行检索到结果。不过后来检查数据时并没有发现数据有异常改变,之后去掉了A表的主键,再运行时orcle提示列的数值不正确,再改为where A.c = '0'时又通过了。实在是摸不着方向了。最后决定采用之前的Oracle版本测试,在Sqlplus或者PlSql中运行:
alter session set "optimizer_features_enable" = '10.2.0.2';
将session设定兼容10.2.0.2,结果运行发现where A.c = '0'和where A.c = 0都成立。
最后妥协,采用:
ALTER SYSTEM SET optimizer_features_enable = '10.2.0.2' SCOPE=spfile;之后重启服务,将全局参数设定为兼容10.2.0.2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值