Bar*_*rtb 3 oracle plsql oracle8i
我在这里看到一些解决方案来检查包中的过程,但它们只适用于oracle 9或10+.
但是有可能在Oracle 8i中进行此检查吗?在Oracle 8中,您没有DBA_PROCEDURES或类似的东西.
任何帮助都会很棒.
使用DBMS_DESCRIBE.它可以在8i中使用.
请参阅:http://docs.oracle.com/cd/A87860_01/doc/index.htm
如果函数的过程不存在,它将返回ORA-20001错误.
例如
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;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5518 次 |
最近记录: |