我是Oracle SQL的新手,并且正在为我正在进行的数据库应用程序课程分配任务,其中一部分任务是从一个表中传输一些数据(empno,bonus_date,job,sal和comm)在命令行上使用SQL。
为了传输数据,我使用子查询以及to_date()函数(赋值指定将当前日期插入到新表中,因为它正在添加,除了来自旧表的数据),但仍然收到以下错误:
ERROR at line 2:
ORA-01427: single-row subquery returns more than one row
我通过电子邮件发送了我的教授,他建议错误可能是我的 to_date()功能带来额外空间的结果,但在更改之后,错误仍然存在。
我也试过更改子查询的格式,但也无济于事。 以下是我正在使用的两个表( emp 是旧表, emp_hist 是新表):
emp (旧)表:
desc emp;
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER(4)
ENAME CHAR(10)
JOB CHAR(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NOT NULL NUMBER(2)
emp_hist (新)表:
desc emp_hist;
Name Null? Type
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER(4)
BONUS_DATE NOT NULL DATE
JOB CHAR(9)
SAL NUMBER(7,2)
COMM NUMBER(7,2)
以下是我一直在使用和接收的查询(和错误消息):
SQL> insert into emp_hist(empno,bonus_date,job,sal,comm)
2 values((select empno from emp),(to_date('10/05/2015','mm/dd/yyyy')),
3 (select job from emp),(select sal from emp),(select comm from emp));
values((select empno from emp),(to_date('10/05/2015','mm/dd/yyyy')),
*
ERROR at line 2:
ORA-01427: single-row subquery returns more than one row
对此有任何见解将不胜感激!如果需要任何其他信息,请告诉我,我会尽力提供!
谢谢!
答案 0 :(得分:1)
如果您只是在学习Oracle,那么您真的不需要insert . . . values()
。更强大的陈述是insert . . . select
。你尝试做的是:
insert into emp_hist(empno, bonus_date, job, sal, comm)
select empno, to_date('10/05/2015','mm/dd/yyyy'), job, sal, comm
from emp;