【问题标题】:Oracle generated column aliases different on two DB'sOracle 在两个数据库上生成的列别名不同
【发布时间】:2015-11-19 13:19:25
【问题描述】:

我们有一个无法修改的遗留应用程序连接到 Oracle 11g,并且在某些时候运行查询并返回结果。然而,应用程序使用 Oracle 的“生成”列名来读取结果。

考虑以下查询:

select nvl(1,0.0) from DUAL;

由于此查询未指定别名,因此生成的列名称将为“nvl(1,0.0)”

但是在另一台服务器上生成的列名称是“nvl(1,0)”(注意 0 而不是 0.0)并且应用程序失败。

是否有可以为 Oracle 更改的配置?我搜索了格式和语言环境配置,它们在两台服务器上都是相同的。

任何帮助将不胜感激

【问题讨论】:

    标签: oracle oracle11g


    【解决方案1】:

    原来有一个名为 cursor_sharing 的参数被设置为 FORCE 而不是 EXACT

    select nvl(1,0.0) from DUAL;
    

    上面的查询根据参数的值返回以下内容:

    FORCE=NVL(1,0)
    EXACT=NVL(1,0.0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-31
      • 2020-07-31
      • 2017-09-29
      • 1970-01-01
      • 2020-09-01
      • 2021-10-23
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多