如何解决调用包中的过程或函数
我已经创建了一个包以及其中的过程和函数。 我有一个小疑问。 如果我在包中同时创建了程序名称employee_dtls employee_dtls 过程作为模式中的独立对象。
但是我想在我的包中调用独立过程employee_dtls但是当我试图调用 包中的过程正在执行,一个独立的过程没有被调用。
请帮助我在这种情况下该怎么办?
解决方法
你能做什么?限定过程名称(如贾斯汀评论的那样)。方法如下(阅读代码中的注释):
独立程序:
SQL> create or replace procedure p_test is
2 begin
3 dbms_output.put_line('...standalone P_TEST procedure');
4 end;
5 /
Procedure created.
打包程序:
SQL> create or replace package pkg_test is
2 procedure p_test;
3 procedure p_run;
4 end;
5 /
Package created.
SQL> create or replace package body pkg_test is
2 procedure p_test is
3 begin
4 dbms_output.put_line('...packaged P_TEST procedure');
5 end;
6
7
8 procedure p_run is
9 begin
10 dbms_output.put_line('calling P_TEST');
11 p_test; -- no qualifier - runs the packaged procedure (that's what you have now)
12
13 dbms_output.put_line('calling SCOTT.P_TEST');
14 scott.p_test; -- procedure name preceded by owner name - runs the standalone procedure
15
16 dbms_output.put_line('calling PKG_TEST.P_TEST');
17 pkg_test.p_test; -- procedur ename preceded by package name - runs the packaged procedure
18 end;
19 end;
20 /
Package body created.
测试:
SQL> set serveroutput on;
SQL> exec pkg_test.p_run;
calling P_TEST
...packaged P_TEST procedure
calling SCOTT.P_TEST
...standalone P_TEST procedure
calling PKG_TEST.P_TEST
...packaged P_TEST procedure
PL/SQL procedure successfully completed.
SQL>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。