gpt4 book ai didi

sql - 如何在同一个表中插入多行-Oracle 10g

转载 作者:行者123 更新时间:2023-12-02 04:21:29 26 4
gpt4 key购买 nike

我在 Oracle SQL 中创建了一个表:

create table t1
(
empno number(6) PRIMARY KEY,
empname varchar(30),
hiredate date,
basic number(8),
deptno number(4)
);

现在我使用单个查询将值插入表中:

insert into t1 values((131309,'HP','20-FEB-04',2000000,1235)
(131310,'HT','20-APR-14',120020,1234));

但这显示错误:

insert into t1 values((131309,'HP','20-FEB-04',2000000,1235),
*
ERROR at line 1:
ORA-00907: missing right parenthesis

我该如何纠正这个问题?

最佳答案

INSERT VALUES 语句始终恰好插入 1 行。如果您想要插入具有硬编码值的多行,最常见的方法就是执行两个单独的 INSERT 语句。

insert into t1 values(131309,'HP','20-FEB-04',2000000,1235);
insert into t1 values(131310,'HT','20-APR-14',120020,1234);

如果您确实愿意,可以从 dual 中选择硬编码值,然后执行 INSERT SELECT

insert into t1
select 131309, 'HP', '20-FEB-04',2000000,1235 from dual
union all
select 131310,'HT','20-APR-14',120020,1234 from dual

或者你可以执行INSERT ALL

insert all 
into t1 values(131309,'HP','20-FEB-04',2000000,1235)
into t1 values(131310,'HT','20-APR-14',120020,1234)
select * from dual

就我个人而言,我只会使用两个语句。

虽然这与您的问题无关,但有一些评论

  • 始终,始终列出 insert 语句中的列。您将使您的 SQL 更加健壮,这样,如果您将来添加允许 NULL 值的新列,您的语句仍然可以工作。当列列表就在那里时,您将避免很多错误,而不是希望有人记住表中列的顺序。
  • 如果要将值插入到日期 列中,请使用日期,而不是表示日期的字符串文字。依赖隐式数据类型转换是许多错误的根源。使用显式的 to_date 或使用 ANSI 日期文字。并使用 4 位数年份。

关于sql - 如何在同一个表中插入多行-Oracle 10g,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25679935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com