Oracle学习笔记第十七天
函数
-- 语法
CREATE [OR REPLACE] FUNCTION
<function name> [(param1,param2)] --函数名、参数
RETURN <datatype> IS|AS --返回值类型
[local declarations] --变量声明
BEGIN
Executable Statements;
RETURN result; --返回值
EXCEPTION
Exception handlers;
END <function name> ;
**注意:入参和出参在定义类型是不要定义长度,否则会报错。 **
-- 示例
-----定义函数
----创建函数根据工号查询工资
create or replace function
get_emp_sal(v_empno emp.empno%type)
return emp.sal%type --指定返回值的数据类型
is
v_sal emp.sal%type;
begin
select e.sal into v_sal
from emp e
where e.empno = v_empno;
--返回查询结果
return v_sal;
end;
------调用函数(方法一)在块中调用
declare
v_result emp.sal%type;
begin
v_result := get_emp_sal(7788);
dbms_output.put_line('工资为:'||v_result);
end;
/
------调用函数(方法二)通过空表调用
select get_emp_sal(7788) from dual;
函数和存储过程一样,A用户调用B用户的函数同样也需要授权。
-- 授权语法
GRANT EXECUTE ON fn_name TO userName;
GRANT EXECUTE ON fn_name TO PUBLIC;
-- 删除权限
DROP FUNCTION fn_name;