本人有这么个疑惑:我认为oracle中发生的错误就一个异常,比如:插入一条语句失败、更新一条语句失败、没有查询出结果,这都是异常。异常可以这么认为吗?
我下面的程序片段:es_sort表中只有三个字段,我插入了四个,为什么没有抛出一个异常,即打印id错误dbms_output.put_line('id错误');而是一直弹出一个窗口:告诉我值过多。这是这个表结构
create table ES_SORT
(
ID NUMBER(10) not null,
SORTNAME VARCHAR2(40) not null,
FATHERID NUMBER(10)
)这个是执行的PL/SQL块
begin
insert into es_sort values(19,'电脑12',9,‘ooo’);
insert into es_sort values(13,'电脑13',9);
commit;
exception
when others then
dbms_output.put_line('id错误');
rollback;
end;
我下面的程序片段:es_sort表中只有三个字段,我插入了四个,为什么没有抛出一个异常,即打印id错误dbms_output.put_line('id错误');而是一直弹出一个窗口:告诉我值过多。这是这个表结构
create table ES_SORT
(
ID NUMBER(10) not null,
SORTNAME VARCHAR2(40) not null,
FATHERID NUMBER(10)
)这个是执行的PL/SQL块
begin
insert into es_sort values(19,'电脑12',9,‘ooo’);
insert into es_sort values(13,'电脑13',9);
commit;
exception
when others then
dbms_output.put_line('id错误');
rollback;
end;
解决方案 »
- oracle数据库
- 怎样才能把这样的sql语句优化呢?(强烈散粉)
- ora-03127: 在活动操作结束之前不允许进行新的操作 问题
- 自增字段用"序列"一定要用"触发器"吗?用"触发器"和不用"触发器"有什么不同啊?
- 使用plsql不解,在plsql执行了更新,但是进入sqlplus看还是未更新的,请问何解?
- 问大家个Select问提
- 请问在Oracle的包体中如何动态创建表?。。。。。。。。。。。
- 库表分区难题,百分相送!!!
- 为什么我一用SHUTDOWN,当前窗口就象死了一般?(我是菜鸟)
- 如何将*.db数据库转成Oracle数据库?
- 如何创建控制文件,我创建报错以下是ORACLE创建的脚本以及报错
- Oracle启动失败 help!!
exception
when others then
begin
dbms_output.put_line('id错误');
rollback;
raise;
end;
你的错误是Oracle编译都没有通过,就像写一个java类 int a = 'abc'; 这样的语句本身就不会通过编译的一样。
insert into es_sort values(19,'电脑12',9,‘ooo’);--这句编译时就报错,不会执行
insert into es_sort values(13,'电脑13',9);
commit;
exception
when others then --执行时才有可能走到这里
dbms_output.put_line('id错误');
rollback;
end;