Oracle INSERT ALL with SELECT 给出无效规范错误

2024-02-25

我想使用 INSERT ALL 语句将 2 行插入 2 个不同的表中。 但如果我想自己插入值,下面的查询就可以正常工作。

insert all
into REGIONS values (5,'Africa')
into JOBS values ('ZZZZ','Shop Sleeper',1000,1000)
select * from DUAL;

但是,如果我想复制具有不同主键值的行,下面的语句给了我ORA-01747 error.

insert all
into REGIONS (select :REGION_ID,REGION_NAME from REGION where REGION_ID = 4)
into JOBS  (select :JOB_ID,JOB_TITLE,MIN_SALARY,MAX_SALARY where JOB_ID = 'ST_CLERK')
select * from DUAL;

我不知道如何纠正查询。请帮忙。


insert all
into REGIONS (select :REGION_ID,REGION_NAME from REGION where REGION_ID = 4)
into JOBS  (select :JOB_ID,JOB_TITLE,MIN_SALARY,MAX_SALARY where JOB_ID = 'ST_CLERK')
select * from DUAL;

以上全部插入语法上不正确。你必须提到VALUES关键字,以及列出所需的列您想要从表中选择要插入的行。

正确的语法是:

INSERT ALL
INTO REGIONS VALUES
  (
    REGION_ID,
    REGION_NAME
  )
INTO JOBS VALUES
  (
    JOB_ID,
    JOB_TITLE,
    MIN_SALARY,
    MAX_SALARY
  )
SELECT REGION_ID,
  REGION_NAME,
  JOB_ID,
  JOB_TITLE,
  MIN_SALARY,
  MAX_SALARY
FROM region, jobs
WHERE region.column=job.column --> Jon with the required key
AND ...; --> Put the required filter conditions                 
  • 测试用例 #1

目标表中具有相同的列。

SQL> CREATE TABLE tab1(a NUMBER, b varchar2(20));

Table created.

SQL> CREATE TABLE tab2(a NUMBER, b varchar2(20));

Table created.

SQL>
SQL> INSERT ALL
  2  INTO tab1(A, b) VALUES(empno, ename)
  3  INTO tab2(A, b)VALUES(empno, ename)
  4  SELECT empno, ename FROM emp;

28 rows created.

SQL>

因此,所有行都插入到表中tab1 and tab2分别。让我们来看看:

SQL> SELECT * FROM tab1;

         A B
---------- --------------------
      7369 SMITH
      7499 ALLEN
      7521 WARD
      7566 JONES
      7654 MARTIN
      7698 BLAKE
      7782 CLARK
      7788 SCOTT
      7839 KING
      7844 TURNER
      7876 ADAMS
      7900 JAMES
      7902 FORD
      7934 MILLER

14 rows selected.

SQL> SELECT * FROM tab2;

         A B
---------- --------------------
      7369 SMITH
      7499 ALLEN
      7521 WARD
      7566 JONES
      7654 MARTIN
      7698 BLAKE
      7782 CLARK
      7788 SCOTT
      7839 KING
      7844 TURNER
      7876 ADAMS
      7900 JAMES
      7902 FORD
      7934 MILLER

14 rows selected.

SQL>
  • 测试用例 #2

目标表中具有不同的列。

SQL> CREATE TABLE tab1(a NUMBER);

Table created.

SQL> CREATE TABLE tab2(b varchar2(20));

Table created.

SQL>
SQL> INSERT ALL
  2  INTO tab1(A) VALUES(empno)
  3  INTO tab2(b)VALUES(ename)
  4  SELECT empno, ename FROM emp;

28 rows created.

让我们来看看:

SQL> SELECT * FROM tab1;

         A
----------
      7369
      7499
      7521
      7566
      7654
      7698
      7782
      7788
      7839
      7844
      7876
      7900
      7902
      7934

14 rows selected.

SQL> SELECT * FROM tab2;

B
--------------------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER

14 rows selected.

SQL>
  • 测试用例 #3

目标表中的列不同,源表中的列不同

SQL> CREATE TABLE tab1(A VARCHAR2(20));

Table created.

SQL> CREATE TABLE tab2(b NUMBER);

Table created.

SQL>
SQL> INSERT ALL
  2      INTO tab1(A) VALUES(ename)
  3      INTO tab2(b)VALUES(deptno)
  4      SELECT e.ename ename, d.deptno deptno FROM emp e, dept d
  5      where e.deptno = d.deptno;

28 rows created.

SQL>

让我们来看看:

SQL> SELECT * FROM tab1;

A
--------------------
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER

14 rows selected.

SQL> SELECT * FROM tab2;

         B
----------
        20
        30
        30
        20
        30
        30
        10
        20
        10
        30
        20
        30
        20
        10

14 rows selected.

SQL>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Oracle INSERT ALL with SELECT 给出无效规范错误 的相关文章

  • 如何使用 Perl 从 NCBI 获取 FASTA 核苷酸格式的基因特征?

    我可以手动下载 FASTA 文件 如下所示 gt lcl CR543861 1 gene 1 ATGCTTTGGACA gt lcl CR543861 1 gene 2 GTGCGACTAAAA 通过单击 发送到 并选择 基因特征 FAST
  • 如何使用flyway将数据从一个DB迁移到另一个DB?

    我在不同的服务器上有两个 postgreSql DB 比如说 A 和 B 我可以使用 Flyway 一些如何将所有数据从 DB A 复制到新设置且为空的 B 如果有人指出我正确的方向和工具 这将很有帮助 要求是通过某种工具自动化将数据从一个
  • 何时使用 JCR(内容存储库)而不是其他选项?

    我正在尝试评估内容存储库 JSR283 http www jcp org en jsr detail id 283 like 长耳大野兔 http jackrabbit apache org and 模式形状 http www jboss
  • Rails 中的多列主键

    我正在尝试将桌面应用程序迁移到rails 还处理相当老式的现有数据库 问题是我在一列中没有唯一的 ID 但表的三列保证了记录的唯一性 鉴于我有三个表 authors author name author letter author nr1
  • 当我尝试连接到数据库时收到“错误:无法初始化 OLE”? C#

    我正在尝试通过 C 连接到数据库 但这样做时收到一条非常无用的错误消息 08 44 17 错误 无法初始化 OLE 08 44 17 错误 无法初始化 OLE 我尝试寻找解决方案 但没有成功 我也尝试重新启动计算机 但这也没有帮助 我正在运
  • WPF 应用程序的最佳本地数据库解决方案是什么?

    目前适用于 WPF 应用程序的最佳解决方案是什么一台电脑 where 各种用户登录它们并使用它们在本地获取 保存信息 以下是我看到选项的方式 MDF似乎是最好的选择 因为我假设您可以很好地锁定它 这样即使用户可以访问 mdf 文件 他们仍然
  • Oracle - 仅当不存在时才创建索引

    有没有什么方法可以在oracle中创建索引 只有当它们不存在时 就像是 CREATE INDEX IF NOT EXISTS ord customer ix ON orders customer id 仅当索引不存在时添加索引 declar
  • 如何对Oracle进行SQL注入

    我正在对一个系统进行审计 开发人员坚称该系统可以防止 SQL 注入 他们通过去掉登录表单中的单引号来实现这一点 但后面的代码没有参数化 它仍然使用字面 SQL 如下所示 username username Replace var sql s
  • 如何从 Oracle 中的 select 语句调用带有 Rowtype 参数的函数

    我有一个 oracle 函数 它有一个 in 参数 它是表的行类型 我需要从 select 语句将当前行传递给这个函数 以便它进行一些处理并返回一个值 是否有一个伪变量可以在 select 语句的上下文中使用 相当于触发器中的旧的和新的 我
  • 使用 SQLite 和 Python 从数据库读取:提供的绑定数量不正确

    我使用以下 python 脚本读取数据库 cur execute SELECT FROM pending where user ID 其中 ID 是某人的名字 在本例中为 Jonathan 但是 当我尝试运行此脚本时 我收到错误消息 Tra
  • 是否可以从数据库转储生成 knex 种子文件?

    就我而言 我使用的是 mysql 但是 我正在寻找一种通用解决方案 用于从当前运行的数据库或数据库转储生成 knex 种子文件 我可以就像是 https github com tgriesser knex issues 944 issuec
  • 在 Oracle 中创建数据库链接时出错

    我有两个数据库 需要编写跨数据库查询 所以我试图创建一个数据库链接 CREATE PUBLIC DATABASE LINK DBLink CONNECT TO SchemaName IDENTIFIED BY 123 using DBNam
  • 如何杀死Mysql“show processlist”中的所有进程?

    因为我在那里看到了很多进程 并且 时间 列显示了所有进程的大值 大规模屠杀操作节省时间 在 MySql 本身中执行此操作 运行这些命令 mysql gt select concat KILL id from information sche
  • Oracle Many OR 与 IN () 的 SQL 性能调优 [重复]

    这个问题在这里已经有答案了 我手头没有 解释计划 您能帮忙判断以下哪一个更有效吗 选项1 select from VIEW ABC where STRING COL AA OR STRING COL BB OR STRING COL BB
  • 可以使用两个独立的 SQLite 数据库吗?

    我有一个 sqlite 数据库 其中存储用户定义的信息和用户只读的信息 我觉得将来可能需要修改只读信息 并且我不想进行整个数据迁移 有没有一种方法可以使用单独的 sqlite 数据库来存储只读信息 该数据库可以轻松替换 如果是这样 您能否就
  • 使用 LIKE 和撇号的 Mysql 查询问题

    所以我有一个有趣的问题 我从未遇到过 并且似乎找不到太多有关纠正该问题的信息 我有一个庞大的数据库 里面有大量的数据 相当于 10 年的数据 并试图对其进行搜索 现在搜索功能运行良好 但最近有人让我注意到一个 错误 如果你愿意的话 我尝试对
  • 如何在SQLite中的两个表之间复制数据?

    我有两个具有不同列的表 如下所示 table1 id title name number address table2 id phone name address 如何将数据 名称 地址 从表 1 复制到表 2 我的问题有两种情况 第一 t
  • 如何使用 Java 创建多个模式连接?

    我必须使用两个数据库 DB2 Oracle 我在 DB2 数据库中有一个名为NAVID 我想使用 Java 为 Oracle 中的所有表创建相同的架构 public class automateExport static String va
  • 如何在sql中提取周数

    我有一个 varchar2 类型的转换列 其中包含以下主菜 01 02 2012 01 03 2012 etc 我使用 to date 函数将其转换为另一列中的日期格式 这是我得到的格式 01 JAN 2012 03 APR 2012 当我
  • 如何使用 Hibernate Session.doWork(...) 进行保存点/嵌套事务?

    我正在使用 JavaEE JPA 托管事务与 Oracle DB 和 Hibernate 并且需要实现某种嵌套事务 据我所知 此类事情不受开箱即用的支持 但我应该能够为此目的使用保存点 正如建议的https stackoverflow co

随机推荐

  • 错误:元素 下的元素 无法识别

    使用 msbuild 构建解决方案时收到此错误 The element
  • 无法对已卸载的组件调用 setState(或forceUpdate)。这是一个空操作,但它表明您的应用程序中存在内存泄漏

    为什么我会收到此错误 警告 无法在未安装的状态下调用 setState 或forceUpdate 成分 这是一个空操作 但它表明您的内存泄漏 应用 要修复此问题 请取消所有订阅和异步任务 在 componentWillUnmount 方法中
  • 单击 Google 登录按钮后应用程序关闭

    我试图将谷歌登录集成到我的应用程序中 当我单击按钮时 应用程序将关闭 而不是崩溃 我在这里犯了什么错误 我尽力遵循谷歌开发者网站告诉我的内容 我提前为冗长的代码表示歉意 我的Java代码 import static com google a
  • CSS:“内联块”元素的意外垂直位置

    请考虑以下 HTML 代码
  • 具有多个 OR 条件的 Countif

    我需要计算列中包含特定值的单元格数量 我目前正在使用以下代码 iVal Application WorksheetFunction COUNTIF Range A A SAL 但是 我现在需要计算有多少个单元格包含其中之一 SAL or P
  • HttpClient.execute 抛出 OutOfMemoryError

    我有一个 Android 应用程序可以发布JSONObject作为一个实体 使用ByteArrayEntity目的 这是它的样子 post setEntity new ByteArrayEntity entity getBytes UTF
  • 多线程排序算法

    我必须在 Java 中为我的算法类实现多线程合并排序和快速排序 并将它们与我的单线程版本进行比较 不过 我以前从未使用过多线程 我的代码可以是多线程的还是必须重新开始 这是我的单线程算法代码 归并排序 sort 方法是我必须实现的策略模式的
  • 如何在 R 中绘制多个堆叠直方图?

    我对 R 非常陌生 今天才开始使用它 我试图在彼此之上绘制多个直方图 我遇到过一些关于如何在彼此之上绘制两个直方图的帖子 但没有找到任何解释如何执行多个直方图的帖子 具体来说 对于我的示例 5 我想绘制 5 个值的堆积直方图 a lt c
  • 使用 Javascript 函数启动下载

    我有多个网址供用户下载 下载应该在他们点击 赞 或发布 推文 后触发 我已经成功地为两者设置了回调函数 我想知道如何使用 Javascript 以便同时触发多个下载 一种解决方案是使用window location 但这只会触发单个下载 我
  • Tkinter:为什么 lambda 函数允许我在命令参数中使用参数?

    我想了解下面发生了什么 我明白我们不能使用arg当我调用该函数时command因为这意味着此时正在执行的函数 但我不明白lambda part 考虑这段代码 command lambda x x 2 它本质上做的是同样的事情 def som
  • Python ConfigParser,键中带有冒号

    如何在 python configparser 中的值中添加分号 https stackoverflow com questions 4298073 how do i put a semicolon in a value in python
  • 响应式设计像素与百分比

    我希望有人能提供帮助 我最近在一个知名网站上观看了有关响应式网页设计的视频 我对导师采取的方法感到困惑 他基本上创建了三个样式表 大 中 小 在每个样式表中 他给出了 DIVS 的 PX 宽度 并在必要时交换图像 当然 这种方法是有缺陷的
  • 尝试使用 Jersey 创建 Restful WebService 时出错

    我正在关注this http www vogella com articles REST article html first创建 CRUD RESTful WebService 的教程 这种类型的 WebService 的教程从第 7 段
  • 找不到 css 文件 - ASP.NET Core Web 应用程序

    我已经创建了一个 asp net core Web 应用程序 我从 空 选项开始 并且正在逐步构建它 看来我的 css 文件没有被读取或找到 当我启动应用程序时 我可以看到我的 html 页面看起来不正常 当我在控制台下的 Edge 中使用
  • Rails 使用哪些测试框架? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Rails 使用哪些单元测试框架 我正在阅读这本书 Pragmatic Programmers Agile Dev with Rails 它展示
  • 在 Rails 中启用自定义格式化程序

    我为 Rails 编写了一个自定义格式化程序 module Logging class GeneralFormatter lt Logger Formatter def call severity time program name mes
  • DialogFragment - 设置初始值并在旋转后保留状态

    我创建了一个对话框片段正在建设和回归警报对话框 from 创建对话框时方法 AlertDialog 包含两个 EditText 视图 我正在设置这两个编辑文本的初始值创建对话框时该方法非常有效 直到我旋转手机并且所有更改都会丢失 恢复为初始
  • Mongodb findOneAndUpdate 函数正在插入新文档

    每当我进行更新 api 调用时 我只需要更新 serviceActiveFlag 状态 更新 api 调用后 我可以看到创建了一个带有空车辆数组的新文档 如下所示 id 59c76073c11d3929148f500f vehicle Ar
  • 应用过滤器时,宽数据表导致scrollx向后滚动

    我能够在我闪亮的应用程序中渲染数据表 但是 只要有宽表 当您对后面的列应用过滤器时 水平滚动条就会回到其初始位置 仅数字列会出现此问题 我想知道是否有一种方法可以禁用基于范围的过滤器 但保留过滤器本身 或者是否有任何其他解决方法可以解决此问
  • Oracle INSERT ALL with SELECT 给出无效规范错误

    我想使用 INSERT ALL 语句将 2 行插入 2 个不同的表中 但如果我想自己插入值 下面的查询就可以正常工作 insert all into REGIONS values 5 Africa into JOBS values ZZZZ