关于pl / sql存储程序文本的问题

时间:2009-11-18 08:58:36

标签: oracle stored-procedures plsql toad ora-00942

我使用TOAD进行PL / SQL开发。在TOAD中,当我输入程序名称并按f4时,我可以看到此程序的源代码。我认为TOAD从v $ sqltext视图中获取源代码。为了证实我的想法,我写了一个查询:

select * from v$sqltext

但是当我执行上层查询时,Oracle给了我一个错误:

  

ORA-00942:表格或视图没有   存在   00942. 00000 - “表或视图不存在”   *原因:
  *动作:行错误:29列:15

所以我认为TOAD从其他地方而不是v $ sqltext视图获取程序的源代码。谁能告诉我这件事?非常感谢。

3 个答案:

答案 0 :(得分:7)

存储过程的完整查询(不在包中):

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;

TYPE的其他值为:

  • TYPE BODY
  • 功能
  • TRIGGER
  • TYPE
  • JAVA SOURCE
  • PACKAGE BODY
  • PACKAGE

答案 1 :(得分:2)

select * from all_source

请参阅ALL_SOURCEV$SQLTEXT的数据库参考。

答案 2 :(得分:1)

如果您在DBA *表上选择了priv,那么请查看select * from dba_source。该表将包含完整的源代码。