繁体   English   中英

如何在ORACLE中显示package的function代码?

[英]How show function code from package in ORACLE?

从 package PACK 显示 function FUNCTION1 的最佳方式是什么?

DESC PACK.FUNCTION1不起作用

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

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

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

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

这两个选项都超过了查询并重新格式化USER_SOURCE中的源代码以查找函数规范。

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

可能是函数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        

如果你碰巧通过 intelliJ 或 Pycharm 的 数据库工具连接,最简单的方法是通过 UI。

首先双击数据库工具中的package:

数据库工具中的包

在打开的选项卡上,选择内省 package:

内省

等待内省完成。 要么你直接看到代码,要么你需要 go 到定义/包体:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM