【问题标题】:how can i handle ORA-00917 error exception block我如何处理 ORA-00917 错误异常块
【发布时间】:2018-10-11 21:01:56
【问题描述】:

已创建具有两列 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;

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

【问题讨论】:

    标签: oracle oracle11g


    【解决方案1】:

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

    【讨论】:

    • hi littlefoot,这意味着编译错误不能在异常块中处理,只能处理运行时错误?
    • 是的,据我所知。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 2021-09-08
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    相关资源
    最近更新 更多