如何处理ORA-00917错误异常块



创建了具有两列 x 和名称的表 x。 编写了一个匿名块以在表中插入数据时捕获错误,但是即使我在异常中提到了ORA-00917错误并且还编写了其他异常部分,我也无法处理ORA-00917错误。

CREATE TABLE X 
(   X    NUMBER NOT NULL ENABLE, 
NAME VARCHAR2(100));

代码

SET SERVEROUTPUT ON;
DECLARE 
EXCEPTION_HANDLE6 EXCEPTION;    
pragma exception_init(EXCEPTION_HANDLE6, -00917);
BEGIN
insert into x values ('2','GOVIND NAGAR 'C'BLK KANPUR' );
EXCEPTION
WHEN EXCEPTION_HANDLE6 THEN
dbms_output.put_line('MISSING COMMA');
WHEN others THEN
dbms_output.put_line('other error ');
END;

我直接显示错误,而不是消息缺少逗号或其他错误

ORA-00917:缺少逗号

我相信你说的是INSERT语句(无论如何看起来是错误的,因为单引号写错了(:

insert into x values ('2','GOVIND NAGAR 'C'BLK KANPUR' );

事实是:你的代码不会编译,你得到的错误是在编译,而不是执行(运行时(,所以你不能那样处理它。必须先修复错误,然后运行代码。

应该是

insert into x values ('2','GOVIND NAGAR ''C''BLK KANPUR' );

(注意两个单引号(,或

insert into x values ('2',q'['GOVIND NAGAR 'C'BLK KANPUR']' );

最新更新