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

时间:2018-10-11 11:26:10

标签: oracle oracle11g

已创建具有两列x和名称的表x。 已经写了一个匿名块来在表中插入数据时捕获错误。但是即使我在异常中提到了它,并且也编写了其他异常部分,我也无法处理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;

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

1 个答案:

答案 0 :(得分:0)

  

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']' );