Страницы

Поиск по вопросам

пятница, 14 февраля 2020 г.

Ошибка при создании пакета - ORA-00955: name is already used by an existing object

#oracle #plsql #sqldeveloper


Вот мой скрипт для создания пакета:

CREATE OR REPLACE PACKAGE PP AS
  TYPE REFCURSOR IS REF CURSOR;
  FUNCTION getData(id IN VARCHAR2) RETURN REFCURSOR;
END PP;


При первом запуске создался пакет. Я добавил процедуру и пытаюсь скомпилировать,
выдает ошибку: 


  ORA-00955: name is already used by an existing object


Как мне пересоздать пакет?
    


Ответы

Ответ 1



Не хватает завершающего символа после объявления пакета. Надо так: ... END PP; / Отличия и общее для завершающих символов "/" и ";" в SQl Developer следующее: Оба символа не входят в стандарт SQL и никак в SQL запросе не интепритируются. ";" является составной частью языка PL/SQL, он завершает законченое выражение. Оба не посылаются на сервер, а служат только как служебные символы - "здесь конец". В одной вкладке редактора (SQL Worksheet) могут находится многочисленные запросы и анонимные блоки. Поэтому, для выполнения одного запроса или блока (по умолчанию с CTRL-ENTER), необходимо: SQL запросы не содержащих PL/SQL блока, в частности - все DML, некоторые DDL, DCL - необходимо завершить его либо с ";", либо с "/" на новой строке. Анонимные блоки и SQL запросы содержащие PL/SQL блок (create ... package/function/trigger/... ) или потенциально могущие его содержать (create ... type), необходимо завершить его с "/", т.к. ";" завершает последний END в блоке. Если SQl Developer не находит завершающих символов, он ищет их дальше по тексту, и когда их найдёт (если не найдёт, то до конца текста), посылает несколько запросов как один, что приводит к неопределённому результату. Обычно ошибку выполнения, которая не всегда совсем понятна. Например: create type idType as object (id number); show errors / Error(2,1): PLS-00103: Encountered the symbol "SHOW" На заметку: Если запрос или блок выделить визуально, тогда SQl Developer выполнит только выделенное, даже если завершающие символы отсутствуют.

Комментариев нет:

Отправить комментарий