у меня есть следующая хранимая процедура:
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.GENERATE_TABLES_FOR_PROJECT
процедура и ошибка в строке № 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