【问题标题】:SQL command not properly ended with insert statementSQL 命令未以插入语句正确结束
【发布时间】:2021-06-01 07:05:59
【问题描述】:

当我尝试插入多行值时,我准确地编写了下面的语句,但收到“SQL 命令未正确结束”的错误。我看不到错误来自哪里,有人可以帮我解决这个问题吗?

INSERT INTO employees
VALUES 
(100, 'Patel', 'Ralph', 22333, 'rpatel@mail.com',1, NULL, 'Sales Rep'),
(101, 'Denis', 'Betty', 33444, 'bdenis@mail.com', 4, NULL, 'Sales Rep'),
(102, 'Biri', 'Ben', 44555, 'bbrir@mail.com', 2, NULL, 'Sales Rep'),
(103, 'Newman', 'Chad', 66777, 'cnewman@mail.com', 3,  NULL, 'Sales Rep'),
(104, 'Ropeburn', 'Andrey', 77888, 'aropeburn@mail.com', 1, NULL, 'Sales Rep');

【问题讨论】:

  • 请同时标记您的数据库
  • 我认为,插入查询没有问题。
  • 这是一个很好的插入语句,它运行良好,在dbfiddle查看它
  • 首先下定决心:MySQL?甲骨文?它们不是同一种产品,在一个中有效的东西很可能在另一个中失败。我在谈论你的标签,在你的帖子底部;请点击“编辑标签”并删除不适用于您的问题的标签。
  • 用于 sql server 和 mysql。请检查我对 oracle 的回答。

标签: database oracle insert rows dml


【解决方案1】:

您的代码将在 sql server 和 mysql 中运行。对于甲骨文:

INSERT INTO employees 
  WITH emp AS ( 
    SELECT 100, 'Patel', 'Ralph', 22333, 'rpatel@mail.com',1, NULL, 'Sales Rep'   FROM dual UNION ALL 
    SELECT 101, 'Denis', 'Betty', 33444, 'bdenis@mail.com', 4, NULL, 'Sales Rep'  FROM dual UNION ALL 
    SELECT 102,'Biri', 'Ben', 44555, 'bbrir@mail.com', 2, NULL, 'Sales Rep' FROM dual UNION ALL 
    SELECT 103,'Newman', 'Chad', 66777, 'cnewman@mail.com', 3,  NULL, 'Sales Rep'     FROM dual union all
    select 104, 'Ropeburn', 'Andrey', 77888, 'aropeburn@mail.com', 1, NULL, 'Sales Rep'from dual
  ) select * from emp;
  

【讨论】:

    【解决方案2】:

    如果 DBMS == OracleDB 那么它不支持INSERT .. VALUES 中的多个数据块。请改用INSERT .. SELECT

    INSERT INTO employees
    SELECT 100, 'Patel', 'Ralph', 22333, 'rpatel@mail.com',1, NULL, 'Sales Rep' FROM DUAL UNION ALL
    SELECT 101, 'Denis', 'Betty', 33444, 'bdenis@mail.com', 4, NULL, 'Sales Rep' FROM DUAL UNION ALL
    SELECT 102, 'Biri', 'Ben', 44555, 'bbrir@mail.com', 2, NULL, 'Sales Rep' FROM DUAL UNION ALL
    SELECT 103, 'Newman', 'Chad', 66777, 'cnewman@mail.com', 3,  NULL, 'Sales Rep' FROM DUAL UNION ALL
    SELECT 104, 'Ropeburn', 'Andrey', 77888, 'aropeburn@mail.com', 1, NULL, 'Sales Rep' FROM DUAL;
    

    fiddle

    您也可以使用 5 个单独的查询:

    INSERT INTO employees VALUES (100, 'Patel', 'Ralph', 22333, 'rpatel@mail.com',1, NULL, 'Sales Rep');
    INSERT INTO employees VALUES (101, 'Denis', 'Betty', 33444, 'bdenis@mail.com', 4, NULL, 'Sales Rep');
    INSERT INTO employees VALUES (102, 'Biri', 'Ben', 44555, 'bbrir@mail.com', 2, NULL, 'Sales Rep');
    INSERT INTO employees VALUES (103, 'Newman', 'Chad', 66777, 'cnewman@mail.com', 3,  NULL, 'Sales Rep');
    INSERT INTO employees VALUES (104, 'Ropeburn', 'Andrey', 77888, 'aropeburn@mail.com', 1, NULL, 'Sales Rep');
    

    【讨论】:

    • 我试过 INSERT ... SELECT。它工作完美。太感谢了。我没有意识到这些语句在不同的服务器上的工作方式不同!
    猜你喜欢
    • 2016-10-15
    • 2011-03-12
    • 2021-06-19
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    相关资源
    最近更新 更多