函数
定义:
CREATE [OR REPLACE] FUNCTION <过程名>[(参数列表)] RETURN 数据类型 IS
[局部变量声明]
BEGIN
可执行语句
EXCEPTION
异常处理语句
END [<过程名>];
变量的类型:in 为默认类型,表示输入; out 表示只输出;in out 表示即输入又输出;
使用:
示例:
创建函数:
create or replace function f_1(n number) return number is
r emp%rowtype;
BEGIN
dbms_output.put_line('姓名 薪水');
select * into r from emp where empno=n;
dbms_output.put_line(r.ename||' '||r.sal); --输出结果,需要 set serverout on 才能显示.
return r.sal;
END;
使用函数:
declare
n number;
m number;
begin
n:=&请输入员工号;
m:=f_1(n);
dbms_output.put_line('m的值为 '||m);
end;
删除函数:
DROP FUNCTION <函数名>;
第一步:创建函数,并运行
create or replace function printNameAndAge
(
username in nvarchar2, -- 用户名
只表示输入
age in out number -- 年龄
表示即输入又输出;
)
return varchar2 -- 返回的类型
is
temp nvarchar2(200); -- 声明变量
begin
temp := '用户名:'||username||' 年龄:'||age;
age := age+10; --改变年龄的值,
return temp;
end;
第二步: 调用函数
方式一:
declare
username nvarchar2(200);
age number;
temp nvarchar2(200);
begin
username := 'yun';
age := 25;
temp := printNameAndAge(username,age); -- 调用函数
dbms_output.put_line('temp=='||temp); -- 打印函数的返回值
dbms_output.put_line('age=='||age); -- 打印查看函数调用后的年龄的值 因为age是 in out方式的,在函数中进行了 --改变后,在函数外部使用时候, 是被改变后的值
end;
方式二:
select printNameAndAge('aa',66) from dual;
第三步: 删除函数
drop function printNameAndAge;