首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Oracle8中检查程序包中是否存在过程?

如何在Oracle8中检查程序包中是否存在过程?
EN

Stack Overflow用户
提问于 2012-11-07 17:46:57
回答 5查看 5.9K关注 0票数 3

我在这里看到了一些用于检查包中的过程的解决方案,但它们只适用于Oracle9或10+。

但是,在Oracle8i中可以执行此检查吗?在Oracle8中,您没有DBA_PROCEDURES或类似的东西。

任何帮助都是最好的。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-11-07 18:53:24

使用DBMS_DESCRIBE。它有8i版本。

请参阅:http://docs.oracle.com/cd/A87860_01/doc/index.htm

如果函数的过程不存在,它将返回ORA-20001错误。

例如

代码语言:javascript
复制
declare 
  V_YOUR_PROC_NAME varchar2(100) := 'MY_PACK.FUNC';
  function proc_exists(p_name varchar2) return boolean
  is
    overload     dbms_describe.number_table;
    position     dbms_describe.number_table;
    c_level      dbms_describe.number_table;
    arg_name     dbms_describe.varchar2_table;
    dty          dbms_describe.number_table;
    def_val      dbms_describe.number_table;
    p_mode       dbms_describe.number_table;
    length       dbms_describe.number_table;
    precision    dbms_describe.number_table;
    scale        dbms_describe.number_table;
    radix        dbms_describe.number_table;
    spare        dbms_describe.number_table;
    idx          integer := 0;
    PROC_NOT_FOUND exception;
    pragma exception_init(PROC_NOT_FOUND, -20001);
  begin
      dbms_describe.describe_procedure(
              p_name,null,null,
              overload,position,
              c_level,arg_name,
              dty,def_val,p_mode,
              length,precision,
              scale,radix,spare);
     return true;
  exception
    when PROC_NOT_FOUND 
    then
      return false;
  end;
begin

  if (proc_exists(V_YOUR_PROC_NAME))
  then
    dbms_output.put_line(' found');
  else
    dbms_output.put_line(' not found');
  end if;
end;
票数 6
EN

Stack Overflow用户

发布于 2012-11-07 18:00:40

我不确定这是否能在Oracle8上运行,但可以试试这个:

代码语言:javascript
复制
select * 
from   all_procedures 
where  object_name = '<package_name>' 
  and  procedure_name = '<proc_name>'
票数 0
EN

Stack Overflow用户

发布于 2012-11-07 18:26:33

按照this question中的建议,您可能会被强制扫描到all_source视图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13267084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档