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只是错误堆栈中与顶级异常相关的消息的标识符。您只需要在堆栈顶部处理实际错误。