为什么我们得到ORA-01003:没有语句解析错误?这是什么意思?在哪种情况下可以生成此错误?

时间:2017-05-02 07:26:58

标签: oracle

为什么我们得到" ORA-01003:没有语句被解析"错误?它是什么意思?在哪种情况下可以生成此错误?如何使用sql developer重现此错误?

2 个答案:

答案 0 :(得分:3)

  

如何使用sql developer重现此错误?

像这样:

DECLARE
  NO_STATEMENT_PARSED EXCEPTION;
  PRAGMA EXCEPTION_INIT( NO_STATEMENT_PARSED, -1003 );
BEGIN
  RAISE NO_STATEMENT_PARSED;
END;
/

答案 1 :(得分:2)

我不知道为什么有人会问这样的问题。

除了MT0的明显解决方案之外,您还可以使用此手动方式​​:

DECLARE
    sqlStr VARCHAR2(1000);
    cur INTEGER;
    ret NUMBER;
BEGIN
    sqlStr := 'DELETE FROM emp WHERE 1 = 0';
    cur := DBMS_SQL.OPEN_CURSOR;
    --DBMS_SQL.PARSE(cur, sqlStr, DBMS_SQL.NATIVE); --> required
    ret := DBMS_SQL.EXECUTE(cur);       
    DBMS_SQL.CLOSE_CURSOR(cur);

    DBMS_OUTPUT.PUT_LINE ( 'ret = ' || ret );

END;

您尝试打开游标而不解析之前的任何语句。