我遇到了Oracle问题,这是我的选择:
create table new_table as
select
idprod as product_id, descr as description
from old_table p where updateNum = (select max(updateNum) from old_table pp where pp.idprod = p.idprod);
此查询给出了一个通用错误,没有解释。 SQL Developer说我:
“在命令的第7行开始出错:[...]错误报告:
SQL命令:create table
失败:警告:执行完成时出现警告“
但创建表格,里面的数据似乎是正确的。
一些提示?
答案 0 :(得分:7)
只要在具有NULL的列上使用函数,Oracle就会在CREATE TABLE语句中发出“失败:警告:执行完成且出现警告”。当您使用CASE WHEN或DECODE并且不使用默认值来处理NULL(例如,ELSE 0)时,通常会发生这种情况。这也是https://forums.oracle.com/forums/thread.jspa?threadID=723332所述同一问题的解决方案。
为避免出现问题:请确保在CREATE TABLE AS中的NULL列上不使用函数(例如,max,sum)。
答案 1 :(得分:5)
旧版本的SQL Developer有一个错误,它会在CREATE TABLE
之后发出类似的警告:请参阅this OTN Forums post。
由于表是使用正确的数据创建并填充的,因此CREATE TABLE
语句是正确的。如果您想确定,请尝试执行SQL * Plus中的语句。