【发布时间】:2019-10-26 13:31:38
【问题描述】:
我有vh_emp 表,其表结构是(这是空表):
我正在从 employee 表中获取数据作为源表,我在其中编写了一些查询以匹配 vh_emp 表:
SELECT e.emp_id EMP_ID,
e.emp_name EMP_NAME,
e.dob DOB,
e.join_date JOIN_DATE,
CASE
WHEN e.leave_date IS NULL THEN Trunc(sysdate)
ELSE e.leave_date
END AS LEAVE_DATE,
e.salary / 100 SALARY,
d.dept_name DEPT_NAME,
one.addr_name ADDRESS_ONE,
two.addr_name ADDRESS_TWO,
b.emp_name AS MANAGER_NAME
FROM offc.employee e
LEFT JOIN offc.department d
ON e.dept_id = d.dept_id
LEFT JOIN offc.add_line_one one
ON e.line1 = one.addr_id_one
LEFT JOIN offc.add_line_two two
ON e.line2 = two.addr_id_two
LEFT OUTER JOIN (SELECT *
FROM offc.employee) b
ON e.manager_id = b.emp_id;
查询运行良好,该查询的输出也正常:
所以,我想将这些数据插入到vh_emp 表中:
INSERT INTO offc.vh_emp
(emp_id,
emp_name,
dob,
join_date,
leave_date,
address_one,
address_two,
salary,
manager_name,
dept_name)
SELECT e.emp_id EMP_ID,
e.emp_name EMP_NAME,
e.dob DOB,
e.join_date JOIN_DATE,
CASE
WHEN e.leave_date IS NULL THEN Trunc(sysdate)
ELSE e.leave_date
END AS LEAVE_DATE,
e.salary / 100 SALARY,
d.dept_name DEPT_NAME,
one.addr_name ADDRESS_ONE,
two.addr_name ADDRESS_TWO,
b.emp_name AS MANAGER_NAME
FROM offc.employee e
LEFT JOIN offc.department d
ON e.dept_id = d.dept_id
LEFT JOIN offc.add_line_one one
ON e.line1 = one.addr_id_one
LEFT JOIN offc.add_line_two two
ON e.line2 = two.addr_id_two
LEFT OUTER JOIN (SELECT *
FROM offc.employee) b
ON e.manager_id = b.emp_id;
但是,我执行了这个查询我得到了错误:
ORA-01722: invalid number
为什么会出现这个错误?我查看并看到 select 语句的列和值的数据类型相同。由于列数据类型匹配,因此不应出现此错误。
【问题讨论】:
标签: sql oracle oracle11g sql-insert