如何在ORACLE中显示包中的功能代码?

时间:2010-09-06 15:36:14

标签: sql oracle

从包PACK中显示函数FUNCTION1的最佳方法是什么?

DESC PACK.FUNCTION1不起作用

3 个答案:

答案 0 :(得分:13)

说“展示”是什么意思? 您可以通过以下方式查看包体实现:

select text 
  from all_source a 
 where a.type = 'PACKAGE BODY' 
   and a.name = 'YOUR_PACKAGE' 
 order by line asc

虽然你不能以这种方式从包中提取某个函数。您可以通过设置a.type = 'FUNCTION'

对独立功能执行相同的操作

答案 1 :(得分:1)

嗯,最好的方法可能是使用类似SQLDeveloper(或TOAD)的东西,它有一个模式浏览器,语法高亮等等,或者将源提取到文本文件中,然后你可以将这些文件放到你最喜欢的编辑器中。

两个选项都在USER_SOURCE中查询和重新格式化源代码,只是为了找到函数规范。

由于DESC PACK.FUNCTION1曾经在Oracle 7上工作,所以在Oracle上相当糟糕,但他们只将它切换到DESC PACK。

答案 2 :(得分:0)

可能是函数FUNCTION1确实存在于包PACK中?因为它有效。

  SQL> desc dbms_output.put_line
   Parameter Type     Mode Default? 
   --------- -------- ---- -------- 
   A         VARCHAR2 IN            

SQL> desc dbms_random;

  Element    Type      
  ---------- --------- 
  SEED       PROCEDURE 
  VALUE      FUNCTION  
  NORMAL     FUNCTION  
  STRING     FUNCTION  
  INITIALIZE PROCEDURE 
  RANDOM     FUNCTION  
  TERMINATE  PROCEDURE 
  NUM_ARRAY  TYPE      

SQL> desc dbms_random.value

  Parameter Type   Mode Default? 
  --------- ------ ---- -------- 
  (RESULT)  NUMBER               
  (RESULT)  NUMBER               
  LOW       NUMBER IN            
  HIGH      NUMBER IN