函数一般用于计算和返回一个值,可以将经常需要进行的计算写成一个函数。
函数与存储过程的区别:
1)函数的调用是表达式的一部分,而过程的调用是一条PL/SQL语句。
2)函数和存储过程一样也是编译后放在内存供用户使用,只不过调用时函数需要表达式。而调用存储过程只需要存储过程的名称。
3)函数必须要有一个返回值,而过程则没有。
函数的语法和过程有些类似,它的语法为:
in:只能用来传值,不能用来赋值;
out:只能用来赋值,不能传值;
in out :既能传值,又能赋值;
在函数中通常只有in类型的参数。
函数例子:
函数的调用:
函数的调用有好几种方式
1)采用select的方式
如:
语法:
函数与存储过程的区别:
1)函数的调用是表达式的一部分,而过程的调用是一条PL/SQL语句。
2)函数和存储过程一样也是编译后放在内存供用户使用,只不过调用时函数需要表达式。而调用存储过程只需要存储过程的名称。
3)函数必须要有一个返回值,而过程则没有。
函数的语法和过程有些类似,它的语法为:
create [or replace] function 函数名
(参数1 in | out | in out 参数类型,参数2 in | out | in out 参数类型 ,......)
return 返回类型
as|is
begin
函数体;
return 返回值;
end 函数名;
其中,函数的参数有3种:
in:只能用来传值,不能用来赋值;
out:只能用来赋值,不能传值;
in out :既能传值,又能赋值;
在函数中通常只有in类型的参数。
函数例子:
create or replace function stuFun
(sex in varchar)
return varchar
as
stucount number;
begin
if sex='男' then
select count(*) into stucount from student where stu_gender ='男';
else
select count(*) into stucount from student where stu_gender ='女';
end if;
return (stucount);
end stuFun;
函数的调用:
函数的调用有好几种方式
1)采用select的方式
如:
select stuFun('男') from dual;
2)方式二
declare
sex varchar2(20);
begin
sex :=stuFun('男');
end;
3)下面需要在sql/plus环境运行才行
var sex VARCHAR(20)
execute sex:= stuFun('男');
删除函数
语法:
drop function 函数名