Oracle 将多个值从源表插入到目标表
下面的代码将从src表中获取所有值,并插入IC_MST_VELOCITY表中。如果下面的代码错误,我需要知道如何将所有记录从src表移到IC_MST_VELOCITY表Oracle 将多个值从源表插入到目标表,oracle,oracle-sqldeveloper,Oracle,Oracle Sqldeveloper,下面的代码将从src表中获取所有值,并插入IC_MST_VELOCITY表中。如果下面的代码错误,我需要知道如何将所有记录从src表移到IC_MST_VELOCITY表 (SELECT ARTICLE, CONCATKEY, CAST (LASTMODIFIEDDATE AS TIMESTAMP) AS LASTMOD, PRODSUBGRP, FR
(SELECT ARTICLE,
CONCATKEY,
CAST (LASTMODIFIEDDATE AS TIMESTAMP) AS LASTMOD,
PRODSUBGRP,
FROM IC_VELOCITY_V
) src
INSERT INTO IC_MST_VELOCITY(
ARTICLE,
CONCATKEY,
ISDELETED,
LASTMODIFIEDDATE,
MSTID,
PRODSUBGRP,
SKUID,
VELOCITY,
WHSE)
VALUES(
select ARTICLE from src,
select CONCATKEY from src,
select LASTMOD from src,
select PRODSUBGRP from src,
)
);
不,你的代码不会做任何事情,因为它是无效的 像这样的事情可能会发生;注意所有
NULL
值都被插入到没有源值的列中(从ic\u velocity\u v
表中选择):
或者,较短的版本,没有没有任何值的列:
insert into ic_mst_velocity
( article,
concatkey,
lastmodifieddate,
prodsubgrp
)
(select article,
concatkey,
cast(lastmodifieddate as timestamp) as lastmod,
prodsubgrp
from ic_velocity_v
);
这些都管用吗?我不知道;这取决于
- 如果有
列,但您没有在其中放入任何内容,那么它将失败notnull
- 如果有一个数据库触发器处理这个问题,它不会失败
- 如果强制执行唯一性并违反它,它将失败
- 那么,也许您需要
子句where
- 那么,也许您需要
- 等等
正如我所说:这要看情况。为什么需要存储过程?您可以使用
插入到。。。选择…
statement()作为单个操作;如果这是一个要求,我想你仍然可以用PL/SQL来包装它,但这不是必需的。你能回顾一下你的问题吗,我认为你在提问时遗漏了一些重要的信息?我觉得如果你有大量的记录要插入数据,你可以参考批量收集的例子。也可以使用插入到一个select*from B,其中1=1
insert into ic_mst_velocity
( article,
concatkey,
lastmodifieddate,
prodsubgrp
)
(select article,
concatkey,
cast(lastmodifieddate as timestamp) as lastmod,
prodsubgrp
from ic_velocity_v
);