Posted on 2008-10-27 11:12
sailor 阅读(369)
评论(0) 编辑 收藏 所属分类:
oracle
一、定义
函数用于返回特定的数据。如果在应用程序中经常需要通过执行SQL语句来返回特定的数据,那么可以基于这些操作建立特定的函数。
二、语法

语法
1
create or replace function fun_name(Name in type, Name in type,
) return varchar2 is
2
varName varchar2;
3
begin
4
5
return(varName);
6
end fun_name;
注意:当建立函数时,函数头部一定要有返回类型,函数执行体一定要有return语句。
三、例子
1、简历函数,不带任何参数

no arg
1
create or replace function stat_dept_noarg
2
return NUMBER is
3
v_count NUMBER(3,0);
4
BEGIN
5
dbms_output.put_line('统计部门人数');
6
select count(empno) into v_count from emp
7
where depno=1;
8
return v_count;
9
END;
10
/
11
12
SQL> set serveroutput on
13
SQL> exec dbms_output.put_line(stat_dept_noarg);
2、建立函数,带有IN参数

arg
1
create or replace function stat_dept(v_no NUMBER)
2
return NUMBER is
3
v_count NUMBER(3,0);
4
BEGIN
5
dbms_output.put_line('统计部门人数');
6
select count(empno) into v_count from emp
7
where depno=v_no;
8
return v_count;
9
END;
10
/

调用
1
select stat_dept(2) from dual;
2
3
或者
4
5
var dno NUMBER
6
exec :dno := stat_dept(2);
3、建立函数,带有参数out

带有参数out
1
create or replace function dept_out(v_no NUMBER,v_dname OUT VARCHAR)
2
return VARCHAR2 is
3
v_desc VARCHAR2(200);
4
BEGIN
5
dbms_output.put_line('查看部门消息');
6
select dname,description into v_dname,v_desc from dept where depno = v_no;
7
return v_desc;
8
END;
9
/
10
11
SQL> var result varchar2
12
SQL> exec :result := dept_out(1,:name);
4、建立函数,同时带有参数in、out
1
SQL> create or replace function show_dept_withinout(v_no in out number, v_name in OUT varchar2)
2
2 return VARCHAR2 is
3
3 v_desc VARCHAR2(30);
4
4 begin
5
5 select dname, description INto v_name, v_desc from dept where depno = v_no;
6
6 return v_desc;
7
7 end;
8
8 /
9
10
Function created
11
12
SQL> var num number
13
SQL> var name varchar2
14
SQL> var desc varchar2
15
SQL> exec :num := 9
16
17
PL/SQL procedure successfully completed
18
num
19
---------
20
9
21
22
SQL> exec :name := 'IT部门'
23
24
PL/SQL procedure successfully completed
25
name
26
---------
27
IT部门
28
29
SQL> exec :desc := show_dept_withinout(:num, :name);
30
31
PL/SQL procedure successfully completed
32
desc
33
---------
34
35
num
36
---------
37
9
38
name
39
---------
40
IT部门
四、查看函数
1
SQL>select text from user_source where name = 'FUNCTION_NAME'