Вопрос о 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
, Эта таблица будет иметь весь исходный код.