Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle 12c列名称不一致_Sql_Oracle_Oracle12c - Fatal编程技术网

Sql Oracle 12c列名称不一致

Sql Oracle 12c列名称不一致,sql,oracle,oracle12c,Sql,Oracle,Oracle12c,所以我对Oracle 12c有一个小问题。 每当我做这样的查询时 SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE table_name = 'EMP'; 我把列名按正确的顺序排列 empno ename ... 但当我再次运行它时,列名会颠倒 deptno comm ... ename empno 有人知道为什么会这样吗?这是12c中实现的一个新“功能”,还是只有我弄错了?最重要的是有办法解决这个问题吗? 提前感谢,如果这是一个愚蠢的问题,请道

所以我对Oracle 12c有一个小问题。 每当我做这样的查询时

SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE table_name = 'EMP';
我把列名按正确的顺序排列

empno
ename
...
但当我再次运行它时,列名会颠倒

deptno
comm
...
ename
empno
有人知道为什么会这样吗?这是12c中实现的一个新“功能”,还是只有我弄错了?最重要的是有办法解决这个问题吗? 提前感谢,如果这是一个愚蠢的问题,请道歉。

使用

order by column_id;

您将始终获得正确的列顺序

什么是正确的顺序?添加ORDER BY以始终获得相同的订单。(否则您不能期望任何特定的顺序。)当然,您应该使用
orderby
来获得确定性输出。它真的每次都变吗?Oracle通常不会如此频繁地更改执行计划。exec计划的变化可能是由以下原因引起的:统计重新计算、一些动态采样或性能基线。如果执行计划真的随着每次执行而改变,那么可能您在Oracle中发现了一个bug。问题是,每当我在11g数据库上运行此查询时,结果都保持不变(我发布的第一件事是,列的顺序是第一次创建表时指定的顺序)。但是,当我在12c数据库上执行相同的查询时,第一个结果是发布的第一个结果,下面是第二个结果。我不知道为什么会这样。也许只是我。理论上这可能是由“性能基线”特性引起的。甲骨文记得执行官。查询计划以及每个计划的一些实际性能数据。优化器可能会为第一次执行生成一些“次优”计划。然后在执行之后,它会注意到该计划执行得不太好,所以它会从“性能基线存储库”恢复到以前的计划。如果确实看到exec,则很难验证。每次执行的计划。