写了一个sql文件
大致如下:
SET ECHO ON
SET TIMING ON
SET SERVEROUTPUT ONWHENEVER SQLERROR EXIT SQL.SQLCODE
WHENEVER OSERROR EXIT 9BEGIN 
EXECUTE 调用的存储过程;
其他DB操作;
COMMIT;
END;
/
EXIT
就报错,但是将主要代码部分改为下面以后就正常了。为什么呢。
*调用的存储过程单独执行是没问题的。EXECUTE 调用的存储过程;
BEGIN 
其他DB操作;
COMMIT;
END;
/
EXIT

解决方案 »

  1.   

    如果你在pl/sql语句块中执行存储过程,不需要execute命令
    begin
    proc_name;
    end
    如果在pl/sql developer的command window或者sql*plus中执行过程则需
    execute proc_name;
      

  2.   

    BEGIN 
     调用的存储过程;
     其他DB操作;
     COMMIT;
     END;
    去掉execute命令就没问题了
    -------------------------
    EXECUTE 调用的存储过程;
     BEGIN 
     其他DB操作;
     COMMIT;
     END;
    这个其实分成了两部分执行,“EXECUTE 调用的存储过程”并不是在pl/sql块中