Имя PL/SQL PROCEDURE уже используется существующим объектом

поэтому я записал процедуру, которая должна принимать 2 параметра: имя и возраст смерти. После этого он проверяет, является ли значение возраста нулевым, где имя .... Если он равен нулю, он должен обновить таблицу, если не выдает следующее сообщение. Но после попытки выполнить запрос я получаю

ORA-00955: имя уже используется существующим объектом 00955. 00000 - "имя уже используется существующим объектом"

ошибки, которые я не знаю, как решить.

 SET SERVEROUTPUT ON

CREATE PROCEDURE set_death_age(input_PRES_NAME IN PRESIDENT.PRE_NAME%TYPE , input_DEATH_AGE IN PRESIDENT.DEATH_AGE%TYPE) IS

Dage PRESIDENT.DEATH_AGE%TYPE;

BEGIN

--Dage := &Enter_death_age;

            SELECT DEATH_AGE  INTO Dage
            FROM PRESIDENT
            WHERE PRES_NAME = input_PRES_NAME;


            IF Dage is null
            THEN

            UPDATE PRESIDENT
            SET DEATH_AGE = input_DEATH_AGE
            WHERE PRES_NAME = input_PRES_NAME;  
            DBMS_OUTPUT.PUT_LINE('Updated');
                    ELSE 
                    DBMS_OUTPUT.PUT_LINE('President is dead');
            END IF;

            EXCEPTION 
            WHEN NO_DATA_FOUND THEN
            DBMS_OUTPUT.PUT_LINE('No such president found');

            WHEN OTHERS THEN
            DBMS_OUTPUT.PUT_LINE('Errorrrrrrr');

END;

person abudabi123    schedule 15.01.2016    source источник
comment
просто используйте CREATE OR REPLACE   -  person Ilia Maskov    schedule 15.01.2016


Ответы (1)


Когда вы компилируете его в первый раз, вы создаете его, а затем заменяете его каждый раз, когда перекомпилируете.

 SET SERVEROUTPUT ON

    CREATE OR REPLACE PROCEDURE set_death_age(input_PRES_NAME IN PRESIDENT.PRE_NAME%TYPE , input_DEATH_AGE IN PRESIDENT.DEATH_AGE%TYPE) IS

    Dage PRESIDENT.DEATH_AGE%TYPE;

    BEGIN

    --Dage := &Enter_death_age;

                SELECT DEATH_AGE  INTO Dage
                FROM PRESIDENT
                WHERE PRES_NAME = input_PRES_NAME;


                IF Dage is null
                THEN

                UPDATE PRESIDENT
                SET DEATH_AGE = input_DEATH_AGE
                WHERE PRES_NAME = input_PRES_NAME;  
                DBMS_OUTPUT.PUT_LINE('Updated');
                        ELSE 
                        DBMS_OUTPUT.PUT_LINE('President is dead');
                END IF;

                EXCEPTION 
                WHEN NO_DATA_FOUND THEN
                DBMS_OUTPUT.PUT_LINE('No such president found');

                WHEN OTHERS THEN
                DBMS_OUTPUT.PUT_LINE('Errorrrrrrr');

    END;
person Mihai-Daniel Virna    schedule 15.01.2016