“insert into”语句不适用于多行

3duebb1j  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(356)

一排就行:

insert into maalerverdi.evverdigrenser
(maalepktnr, fradato, tildato, telleverkartnr, minimum, maximum)
values 
(100121, '01-jan-2019', '01-jun-2073', 202, -0.0001, 50)

但再添加一行行不通:

insert into maalerverdi.evverdigrenser
(maalepktnr, fradato, tildato, telleverkartnr, minimum, maximum)
values 
(100121, '01-jan-2019', '01-jun-2073', 202, -0.0001, 50),
(100126, '01-jan-2019', '01-jun-2073', 202, -0.0001, 50);

错误:sql命令未正确结束

svujldwt

svujldwt1#

您的错误消息看起来像oracle的 ORA-00933 (谁的信息是 SQL command not properly ended ). 实际上,这个数据库(与其他许多数据库不同)不支持您一次插入多行所使用的语法。
如果要在单个语句中执行此操作,可以使用 insert all 而不是语法。其目的是 insert 到一个或多个表中,因此需要重复表名和列列表:

insert all 
    into maalerverdi.evverdigrenser
        (maalepktnr, fradato, tildato, telleverkartnr, minimum, maximum)
        values  (100121, '01-jan-2019', '01-jun-2073', 202, -0.0001, 50)
    into maalerverdi.evverdigrenser
        (maalepktnr, fradato, tildato, telleverkartnr, minimum, maximum)
        values  (100126, '01-jan-2019', '01-jun-2073', 202, -0.0001, 50);

旁注:您似乎试图插入 date 柱。如果是这样,我建议使用标准语法来声明日期文本,而不是这种自定义格式(oracle能否成功地将其解释为日期取决于您的数据库和会话设置)。那就是:

insert all 
    into maalerverdi.evverdigrenser
        (maalepktnr, fradato, tildato, telleverkartnr, minimum, maximum)
        values  (100121, date '2019-01-01', date '2073-06-01', 202, -0.0001, 50)
    into maalerverdi.evverdigrenser
        (maalepktnr, fradato, tildato, telleverkartnr, minimum, maximum)
        values  (100126, date '2019-01-01', date '1973-06-01', 202, -0.0001, 50);

相关问题