Php Oracle数据库获取wierd错误

Php Oracle数据库获取wierd错误,php,ajax,oracle,xampp,oracle10g,Php,Ajax,Oracle,Xampp,Oracle10g,我有下一个存储过程: create or replace procedure generate_tables_for_project as begin execute immediate 'create table farmers (email nvarchar2(30) PRIMARY KEY, fname nvarchar2(30), lname nvarchar2(30), password nvarchar2(30), farmname nvarchar2(30), region nv

我有下一个存储过程:

create or replace procedure generate_tables_for_project
as
begin
execute immediate 'create table farmers (email nvarchar2(30) PRIMARY KEY, fname nvarchar2(30), lname nvarchar2(30), password nvarchar2(30),  farmname nvarchar2(30), region nvarchar2(30), address nvarchar2(30) )';
execute immediate 'create table ISRAELLOCATIONS (region nvarchar2(30), regionID number(2) PRIMARY KEY )';
execute immediate 'create table product (name nvarchar2(30), productID number(2) PRIMARY KEY )';
execute immediate 'create table sub_product (name nvarchar2(30), sub_productID number(3) PRIMARY KEY , product_id number(2) REFERENCES product( productID))'; EXCEPTION
WHEN OTHERS THEN IF SQLCODE = -955
THEN
raise_application_error(-20001, 'Tables Exist!!!');--DBMS_OUTPUT.PUT_LINE( 'Data already exist!!!');
END IF;
end  generate_tables_for_project;
现在,当我在SQLdeveloper中激活该过程时,表将被创建。 但我再次激活,我想只有-955个表存在错误。 但我也发现了一些错误:

ORA-20001: Tables Exist!!!
ORA-06512: at "HR.GENERATE_TABLES_FOR_PROJECT", line 11
ORA-06512: at line 2
ORA-20001错误是我为0955提出的错误,所以这很好, 但另外两个是什么


谢谢

另外两个错误是因为
HR上有一个错误。为\u项目生成\u表\u
过程,错误在第2行。

它显示了错误堆栈,并不意味着您有更多错误;例如:

    SQL> CREATE OR REPLACE PROCEDURE test_error IS
  2  BEGIN
  3      raise_application_error(-20001, 'Error 1');
  4  EXCEPTION
  5      WHEN OTHERS THEN
  6          raise_application_error(-20002, 'Error 2');
  7  END;
  8  /

Procedure created.

SQL> exec test_error
BEGIN test_error; END;

*
ERROR at line 1:  
ORA-20002: Error 2
ORA-06512: at "SIUCONTAB.TEST_ERROR", line 6
ORA-06512: at line 1

这是过程,create语句中的错误是什么?create语句中没有错误。但由于表存在,在该语句上创建的表失败。这些实际上是一个错误堆栈,用于引导您找到错误的确切点。@Shariar Imtiaz如果由于表的存在而出现错误,那么假设只有955个错误,那么我如何处理添加错误6512呢?它实际上不是一个额外的错误-ORA-06512只是在Oracle的不同级别发布的一系列相关消息的标识符,用于堆栈顶部的实际错误。你只需要处理顶级异常。好吧,那么我怎么能处理这个异常呢?我想你不能;这是一个古老的讨论。你不能通过使用dbms\u输出或任何其他日志记录方式来避免引发应用程序错误吗?这很好,但是如果使用
dbms\u输出我无法捕获955异常@Aleksejb,其他两个不是错误。ORA 06512只是错误堆栈中与顶级异常相关的消息的标识符。您只需要在堆栈顶部处理实际错误。