вопрос о pl / sql хранимом тексте программы - PullRequest
2 голосов
/ 18 ноября 2009

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

select * from v$sqltext

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

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

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

Ответы [ 3 ]

7 голосов
/ 18 ноября 2009

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

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;

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

  • ТИП ТЕЛА
  • ФУНКЦИЯ
  • TRIGGER
  • TYPE
  • JAVA SOURCE
  • УПАКОВКА
  • ПАКЕТ
2 голосов
/ 18 ноября 2009

select * from all_source

См. Ссылку на базу данных для ALL_SOURCE и V $ SQLTEXT .

1 голос
/ 18 ноября 2009

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

...