我们有一个遗留的应用程序,我们无法修改连接到Oracle 11g,并在某些时候运行查询并返回结果。但是,应用程序使用Oracle中的“生成”列名来读取结果。
考虑以下问题:
select nvl(1,0.0) from DUAL;
由于此查询未指定别名,因此生成的列名称将为“nvl(1,0.0)”
但是在另一台服务器上,生成的列名是“nvl(1,0)”(注意0而不是0.0),应用程序失败。
是否有可以为Oracle更改的配置?我搜索了格式化和区域设置配置,它们在两台服务器上都是相同的。
任何帮助将不胜感激
答案 0 :(得分:1)
事实证明,有一个名为cursor_sharing的参数设置为FORCE而不是EXACT
select nvl(1,0.0) from DUAL;
上面的查询根据参数的值返回以下内容:
FORCE=NVL(1,0)
EXACT=NVL(1,0.0)