test  用户创建函数:

create or replace function get_sal(name1 varchar2)
return number is
v_sal number(6,2);
begin
select sal into v_sal from emp where upper(ename)=upper(name1);
return v_sal;
end;

SQL> select object_name,object_type from user_objects;

OBJECT_NAME		       OBJECT_TYPE
------------------------------ -------------------
XX			       PROCEDURE
V			       VIEW
EMP_1			       TABLE
DEPT_1			       TABLE
EMPLOYEES		       TABLE
ORDERS			       TABLE
DUPES			       TABLE
EMP2			       TABLE
GET_SAL 		       FUNCTION
A1			       TABLE
TEST			       TABLE

SQL> conn / as sysdba
已连接。
SQL> create user fun identified by fun;

用户已创建。

SQL> grant connect,resource to fun;

授权成功。

SQL> grant execute on test.get_sal to fun;

授权成功。


SQL> conn fun/fun
已连接。
SQL> select test.get_sal('scott') from dual;

TEST.GET_SAL('SCOTT')
---------------------
		 3000