Пакеты Oracle 10g недоступны - PullRequest
2 голосов
/ 20 апреля 2011

Я учусь на PL / SQL. У меня локальная установка 10g, против которой я выполняю свои запросы. Всякий раз, когда я пытаюсь использовать DBMS_ALERT, DBMS_PIPE или другие пакеты по умолчанию, я получаю сообщение «неверный SQL». Я пробовал запросы в TOAD и SQL + Plus с одинаковыми результатами. Это заставит меня поверить, что эти пакеты не установлены или недоступны для моего пользовательского сеанса. Я использую имя пользователя 'SYS', поэтому я не думаю, что разрешения будут проблемой.

Может кто-нибудь рассказать мне, как сделать эти пакеты доступными? У меня было впечатление, что они были предоставлены по умолчанию?

Большое спасибо,

Кайл

Ответы [ 2 ]

3 голосов
/ 21 апреля 2011

Одна вещь, которую вы, возможно, делаете неправильно, это попытка вызвать функцию или процедуру PL / SQL вне блока PL / SQL. Возможно, вам придется заключить вызовы в процедуры в begin и end, например:

SQL> dbms_lock.sleep(1);
SP2-0734: unknown command beginning "dbms_lock...." - rest of line ignored.
SQL> begin dbms_lock.sleep(1); end;
  2  /

PL/SQL procedure successfully completed.

(Один / в строке сам по себе говорит SQL * Plus, что это конец ввода. Обычно SQL * Plus использует точку с запятой для обозначения конца оператора. Однако PL / SQL может содержать точки с запятой и если SQL * Plus распознает, что вы вводите PL / SQL, он будет ждать одиночного / самостоятельно, прежде чем передать свои данные в базу данных.)

Другая возможная причина ошибок, которые вы видите, заключается в том, что вы пытаетесь вызвать хранимую процедуру в запросе. Это невозможно, поскольку хранимая процедура не возвращает результата. По общему признанию, ошибка, которую вы получаете, если вы пытаетесь вызвать процедуру в запросе, не особенно полезна:

SQL> select dbms_alert.register('test') from dual;
select dbms_alert.register('test') from dual
       *
ERROR at line 1:
ORA-00904: "DBMS_ALERT"."REGISTER": invalid identifier

Причиной этой ошибки, вероятно, является то, что Oracle не утруждает себя поиском среди хранимых процедур имени dbms_alert.register, поэтому вместо этого выдает общую ошибку "Я не могу найти это имя".

Если ваша проблема не относится к числу тех, что я описал, пожалуйста, дайте мне знать.

2 голосов
/ 21 апреля 2011

Эти пакеты могут просто не быть установлены.Если вы хотите установить их, посмотрите в каталог $ ORACLE_HOME / rdbms / admin и запустите сценарии как SYS.Я включил ссылки на файлы для пакетов, которые вы перечислили выше.

DBMS_ALERT dbmsalrt.sql и prvtalrt.plb

DBMS_PIPE dbmspipe.sql и prvtpipe.plb

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