Простая хранимая процедура Oracle получает ошибку недопустимого объекта - PullRequest
0 голосов
/ 10 мая 2010

Я пытаюсь написать простую хранимую процедуру Oracle:

CREATE OR REPLACE PROCEDURE act.skeleton
IS
DECLARE
  v_rowCount NUMBER;
BEGIN
  SELECT COUNT(1) INTO v_rowCount FROM ex.emp;
  DBMS_OUTPUT.PUT_LINE(v_rowCount);
END;

Однако, когда я пытаюсь выполнить процедуру, введя execute act.skeleton в командном окне PL / SQL Developer, я получаю следующее сообщение об ошибке:

ORA-06550: line 1, column 11:
PLS-00905: object ACT.SKELETON is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

Я попытался просто запустить код без оператора процедуры создания, и он успешно работает с отображаемым выводом. Я пробовал оба варианта CREATE OR REPLACE PROCEDURE IS & CREATE OR REPLACE PROCEDURE AS, но все равно получаю ту же ошибку.

Я не уверен, имеет ли это какое-либо отношение к авторизации или видимости процедуры, когда я пытаюсь ее выполнить, или к тому, что делает объект act.skeleton недействительным. Я рассмотрел, что означает ошибка, и, похоже, она обычно относится к ошибке компиляции в процедуре, но, поскольку я могу запустить код без объявления процедуры, я предполагаю, что фрагмент объявления является виновником. Я просто не знаю достаточно, чтобы понять, что является причиной этого, и я надеялся, что кто-то сможет пролить на него немного света и указать мне правильное направление

Спасибо

Ashish

Другие детали:

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production

1 Ответ

2 голосов
/ 10 мая 2010

Не используйте ключевое слово DECLARE в объявлении хранимой процедуры. Удалите это, и оно должно скомпилироваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...