oracle对存储过程授权,PL/SQL包内的存储过程执行授权
请教一个PL/SQL包内的存储过程执行授权的问题:
我发现可以将对包的执行权限赋予用户,但却无法将对包内的存储过程的执行权限赋予用户,请教如何才能赋权呢?
[oracle@localhost ~]$ cat test.sql
CREATE OR REPLACE PACKAGE pkg_test IS
PROCEDURE prog_test(P1 IN VARCHAR2,P2 IN VARCHAR2);
END pkg_test;
/
CREATE OR REPLACE PACKAGE BODY pkg_test IS
PROCEDURE prog_test(P1 IN VARCHAR2,P2 IN VARCHAR2) IS
BEGIN
DBMS_OUTPUT.PUT_LINE (This is just a test.);
END;
END pkg_test;
/
[oracle@localhost ~]$
SQL> @test.sql
SQL> CREATE OR REPLACE PACKAGE pkg_test IS
2
3 PROCEDURE prog_test(P1 IN VARCHAR2,P2 IN VARCHAR2);
4
5 END pkg_test;
6 /
Package created.
SQL>
SQL> CREATE OR REPLACE PACKAGE BODY pkg_test IS
2 PROCEDURE prog_test(P1 IN VARCHAR2,P2 IN VARCHAR2) IS
3 BEGIN
4 DBMS_OUTPUT.PUT_LINE (This is just a test.);
5 END;
6 END pkg_test;
7 /
Package body created.
SQL> set severoutput on;
SP2-0735: unknown SET option beginning "severoutpu..."
SQL> set serveroutput on;
SQL>
SQL> execute pkg_test.prog_test(a,b);
This is just a test.
PL/SQL procedure successfully completed.
SQL>
SQL> show user;
USER is "SYS"
SQL> grant execute on pkg_test.prog_test to tester;
grant execute on pkg_test.prog_test to tester
*
ERROR at line 1:
ORA-04042: procedure, function, package, or package body does not exist
SQL> grant execute on pkg_test.prog_test(in varchar2,in varchar2) to tester;
grant execute on pkg_test.prog_test(in varchar2,in varchar2) to tester
*
ERROR at line 1:
ORA-00990: missing or invalid privilege
SQL>
SQL> grant execute on pkg_test.prog_test(p1 in varchar2,p2 in varchar2) to tester;
grant execute on pkg_test.prog_test(p1 in varchar2,p2 in varchar2) to tester
*
ERROR at line 1:
ORA-00990: missing or invalid privilege
SQL>
请教一个PL/SQL包内的存储过程执行授权的问题: 我发现可以将对包的执行权限赋予用户,但却无法将对包内的存储过程的执行权限赋予用户,请教如何才能赋权呢? [oracle@localhost ~]$ cat test.sql CREATE OR REPLACE PACKAGE pkg_test IS PROCEDURE prog_test(P1 IN VARCHAR2,P2 IN VARCHAR2); END pkg_test; / CREATE OR REPLACE PACKAGE BODY pkg_test IS PROCEDURE prog_test(P1 IN VARCHAR2,P2 IN VARCHAR2) IS BEGIN DBMS_OUTPUT.PUT_LINE (This is just a test.); END; END pkg_test; / [oracle@localhost ~]$ SQL> @test.sql SQL> CREATE OR REPLACE PACKAGE pkg_test IS 2 3 PROCEDURE prog_test(P1 IN VARCHAR2,P2 IN VARCHAR2); 4 5 END pkg_test; 6 / Package created. SQL> SQL> CREATE OR REPLACE PACKAGE BODY pkg_test IS 2 PROCEDURE prog_test(P1 IN VARCHAR2,P2 IN VARCHAR2) IS 3 BEGIN 4 DBMS_OUTPUT.PUT_LINE (This is just a test.); 5 END; 6 END pkg_test; 7 / Package body created. SQL> set severoutput on; SP2-0735: unknown SET option beginning "severoutpu..." SQL> set serveroutput on; SQL> SQL> execute pkg_test.prog_test(a,b); This is just a test. PL/SQL procedure successfully completed. SQL> SQL> show user; USER is "SYS" SQL> grant execute on pkg_test.prog_test to tester; grant execute on pkg_test.prog_test to tester * ERROR at line 1: ORA-04042: procedure, function, package, or package body does not exist SQL> grant execute on pkg_test.prog_test(in varchar2,in varchar2) to tester; grant execute on pkg_test.prog_test(in varchar2,in varchar2) to tester * ERROR at line 1: ORA-00990: missing or invalid privilege SQL> SQL> grant execute on pkg_test.prog_test(p1 in varchar2,p2 in varchar2) to tester; grant execute on pkg_test.prog_test(p1 in varchar2,p2 in varchar2) to tester * ERROR at line 1: ORA-00990: missing or invalid privilege SQL>