【发布时间】:2021-10-27 08:52:29
【问题描述】:
我要动态检查,
- 如果存在新表,那么我想从新表中检索数据并将这些值插入到另一个表中。
- 如果新表不存在,那么我想打印不存在新表。
表是AAA_AAA,
| emp_id | emp_name | emp_salary |
|---|---|---|
| 120 | abc | 50000 |
| 121 | bcd | 45000 |
如果存在新表,那么我必须从上表中选择值并将这些值插入到其他表中。
如果新表不存在,那么我想打印不存在新表。
我已经写了下面的查询,
select object_name from user_objects , case when select object_name from user_objects where created >= (sysdate-12/24) then select * from AAA_AAA into BBB_BBB;
BBB_BBB 是表名,如果存在新创建的表,我必须在其中插入 AAA_AAA 表中的值。
但我没有得到想要的输出。
【问题讨论】:
-
这有点糟糕的设计。除了代码之外,您如何在逻辑上确定存在“新”表?这个“新”表将被视为“新”多久?将来还会有更多、更新的“新”表吗?这张新桌子有什么商业用途?从您对其用途的描述来看,听起来它只是将数据加载到最终目的地的入口点。那么这个“新”表的数据是从哪里来的呢?我强烈怀疑有更好的方法。
-
会有更多的表。每 30 分钟将创建新表
-
“每 30 分钟将创建新表” 剩下的问题呢?这听起来越来越像是整个设计需要重新思考。
-
您不应该“每 30 分钟”创建新表。甚至不是每个月。听起来您每 30 分钟就有一个新数据文件,您正试图将其加载到“旧”表中。为此,您应该使用单个外部表,根据需要替换数据文件,或使用 sqlldr。
标签: oracle oracle11g oracle10g oracle-sqldeveloper