在某些版本升级期间,我在Oracle DB中迁移数据时遇到问题。
案例:
我需要一个Oracle SQL查询,它根据TMP中的coulmns大小将TMP表中的数据复制到实际表中,其中我暂时存储了数据(必须这样做)。
以下是我尝试的查询,但它无法正常工作。
insert into USER.X values
(CASE (select count(*) from all_tab_columns where table_name='TMP')
WHEN '3' THEN (select USER.TMP.*, null NEWCOL1 from USER.TMP, null NEWCOL2 from USER.TMP)
WHEN '5' THEN (select USER.TMP.* from USER.TMP)
END
);
请在这方面提供帮助,如果有更好的方法,请告诉我。
答案 0 :(得分:2)
编辑: 你的逻辑有很多问题。
too many values
所以你应该
Execute immidiate
上一页。响应
您的查询中的第一个问题是select count(*) from all_tab_columns where table_name='TMP'
返回一个整数,而在case
中,您将其与'3'
和'5'
作为varchar进行比较。因此,假设您的查询的其余部分正确返回结果,请尝试将'3'
和'5'
替换为3
和5