如何在Oracle中打印出过程的定义?

Nic*_*las 15 sql oracle plsql

在oracle中有没有办法看到程序的结构是什么?我正在尝试记录并正在运行过程,并希望将实际的过程结构存储在我的日志中.

Jus*_*ave 19

你可以查询ALL_SOURCE表格

SELECT text 
  FROM all_source
 WHERE owner = <<owner of procedure>>
   AND name  = <<name of procedure>>
 ORDER BY line
Run Code Online (Sandbox Code Playgroud)

如果您正在处理包内的过程

SELECT text 
  FROM all_source
 WHERE owner = <<owner of procedure>>
   AND name  = <<name of procedure>>
   AND type  = 'PACKAGE BODY'
 ORDER BY line
Run Code Online (Sandbox Code Playgroud)

将为您提供包体的文本.您还可以使用TYPE"PACKAGE" 获取包规范的文本


cwa*_*ole 5

SELECT TEXT, LINE FROM ALL_SOURCE WHERE 
    NAME = UPPER('$name') -- the table also has an owner field to track the user
    ORDER BY TYPE, -- type is generally procedure, but there are functions and 
                   -- more complex structures as well, such as PACKAGE
    TO_NUMBER( LINE )
Run Code Online (Sandbox Code Playgroud)


DCo*_*kie 5

dbms_metadata 包get_ddl 函数,也许?

SELECT dbms_metadata.get_ddl('PROCEDURE','<yourproc>','<schema>') FROM dual;
Run Code Online (Sandbox Code Playgroud)