首页 > 解决方案 > Oracle 的全部插入与按列插入的功能

问题描述

我已经到了一个我一直在玩弄一些东西的地方,试图弄清楚为什么它不起作用,并想我会在这里问。我目前正在对批处理进行调整,该批处理涉及创建用于暂存的外部表 A,然后将数据从该表传输到表 B 以进行进一步处理。

在之前的批处理中有一个步骤来加载所有数据,它是这样的:

INSERT INTO TABLE B SELECT * FROM TABLE A

在 Oracle Developer 中批量运行此语句并在其外部运行时,我收到以下错误:

Run query ORA-00932: inconsistent datatypes: expected DATE got NUMBER

我逐行进行了调整,并确保我拥有正确的数据类型。我还尽我所能检查了数据本身,据我所知,这似乎也很正常。为了找出可能出现错误的单个字段,我尝试一次将数据从表 A 加载到表 B 中...这样做我没有收到任何让我感到震惊的错误。如果我使用下面的 SQL 并单独列出所有字段,则所有数据的负载都可以完美运行。有人可以解释为什么会这样吗?以下函数是否执行前一个不执行的内部 Oracle 工作?

    insert into TABLE B (
    COLUMN_ONE,
    COLUMN_TWO,
    COLUMN_THREE
    .
    .
    .)
    select
    COLUMN_ONE,
    COLUMN_TWO,
    COLUMN_THREE
    .
    .
    .
    from TABLE A;

标签: oracleselectinsert

解决方案


好吧,如果您发布表 A 和 B 的描述,我们可以自己看到。就像现在一样,我们必须相信你所说的,即一切都匹配(但 Oracle 不同意),所以我不知道该说什么。

另一方面,我了解到使用

INSERT INTO TABLE B SELECT * FROM TABLE A

是一种糟糕的处理方式(除非这是一个快速而肮脏的测试)。我总是尝试为我正在使用的所有列命名,无论其中有多少列参与了该操作。正如您所注意到的,这似乎对您也很有效,所以我建议您继续这样做。


推荐阅读