Вопрос о pl/sql хранимом тексте программы

Я использую TOAD для разработки PL/SQL. В TOAD, когда я набираю имя процедуры и нажимаю f4, я вижу исходный код этой процедуры. Я думаю, что TOAD получить исходный код из представления v$sqltext. Чтобы подтвердить свою мысль, я написал запрос:

select * from v$sqltext

но когда я выполняю верхний запрос, Oracle выдаёт мне ошибку:

ORA-00942: таблица или представление не существует 00942. 00000 - "таблица или представление не существует" * Причина:
* Действие: Ошибка в строке: 29 столбец: 15

Поэтому я думаю, что TOAD получит исходный код процедуры из другого места вместо представления v$sqltext. Кто-нибудь может рассказать мне об этом? Большое спасибо.

3 ответа

Решение

Полный запрос для хранимой процедуры (не в пакете):

select text
from   all_source
where  owner = 'MYSCHEMA'
and    type = 'PROCEDURE'
and    name = 'MY_PROCEDURE'
order by line;

Если вы подключены как пользователь MYSCHEMA, чем вы можете использовать USER_SOURCE:

select text
from   user_source
where  type = 'PROCEDURE'
and    name = 'MY_PROCEDURE'
order by line;

Другие значения для ТИПА:

  • ТИП ТЕЛА
  • ФУНКЦИЯ
  • СПУСКОВОЙ КРЮЧОК
  • ТИП
  • JAVA SOURCE
  • УПАКОВКА ТЕЛА
  • ПАКЕТ

select * from all_source

См. Справочник по базе данных для ALL_SOURCE и V $ SQLTEXT.

Если вы выбрали priv в таблицах DBA*, проверьте select * from dba_source, Эта таблица будет иметь весь исходный код.

Другие вопросы по тегам