我有以下代码
insert into emp(empno,ename,deptno)
select
t.col001,t.col002,d.deptno
from
testselect t
left join dept d on d.code=t.dept_code
where t.linenum=3
当插入信息出现问题时,我希望它能告诉我哪一列出现了问题。例如,当它给出错误消息无效数字时,哪个列号有此错误。
事实上,我想写一个程序,告诉最终用户错误在哪里,所以我想用一个程序来写错误的确切位置,以显示给用户。
2条答案
按热度按时间ttcibm8c1#
Oracle无论如何都要这样做;不过,不是通过告诉你一个列 * 编号 *(我假设你是在谈论它在
select
语句的列列表中的 * 位置 *),而是实际标记该列。举例来说:
我将尝试将作业名称(
emp.job
是varchar2
列,包含类似于CLERK或CLENER的值)插入到数据类型为number
的test.empno
中,因此它将引发 invalid number 错误:看到指向
e.job
的星号了吗?他就是罪魁祸首。我使用的工具是SQL*Plus。
emeijp432#
这很简单。你有三个表和三个列。在insert语句中,你有1个表(emp)和3个列(empno,deptno,empno)。在select语句中,有2个表(testselect,dept)和3个列(col 001,col 002,deptno)。
所有你需要做的-描述你的列的数据类型,像这样:
| 表插入|列插入|数据类型插入|表选择|列选择|数据类型选择|
| --|--|--|--|--|--|
| EMP| empno|什么?|测试选择|颜色001|什么?|
| EMP|易名中国|什么?|测试选择|Col002|什么?|
| EMP| deptno|什么?|部|deptno|什么?|
因此,在您填写此表后,您将能够意识到哪些数据类型兼容,哪些不兼容(这种不兼容性可能会引发错误)。