函数也是编译好的,存储在数据库服务器上的程序代码。函数有名字及参数,与存储过程不同的是函数必须有返回值
如果只想在自己的模式中创建函数,只需具有create procedure权限,如果想在其他模式下创建函数,用户必须具有create any procedure权限
语法:
创建函数
create [or replace] function [schema.]function_name [parameter_list] --parameter_list表示函数的参数,参数有三种模式
--in 表示调用函数时,必须给参数指定一个值,参数的模式默认是in
--out 表示函数将把一个值传递给这个参数,函数执行完成后可以访问这个值
--inout前面两种的组合
return returning_datatype --return定义函数返回的数据类型
{AS|IS}
declaration_section --declaration_section指定函数的定义部分,主要用于定义变量
begin executable_section --executable_section 指定执行部分,含有一系列PL/SQL语句
[EXCEPTION]
exception_section --exception_section指定异常处理部分,用于异常处理
end [function_name];
/
删除函数
drop function function_name;
调用函数
如何得到函数的创建脚本
select text from user_source where name=‘function_name’ and type ='function';
--注:函数名和类型一般需要大写
如何知道数据库中有哪些用户自定义函数
查询视图DBA_OBJECTS可以知道一个用户有哪些用户自定义函数
select owner,object_name from dba_objects where owner='owner_name' and object_type ='function';