最近碰到Oracle function函数 ,在网上找了找资料,发现写出来的都是无效的,后来终于写对了,把写对的代码记下来,暂时只写了一个带in参数的。PLSQL好像不能处理带out 或者 inout参数的
一:带参数的function
create or replace function 函数名(变量名 in 变量类型)return 返回值类型
as 返回值名称 返回值所在表中的位置%TYPE;
begin 函数主体;
return 返回值名称;
end;
例:表结构如下:
表名student
id | xuxehao | name | kecheng | kcname | fenshu |
1 | 2005001 | 张三 | 0001 | 数学 | 109 |
2 | 2005001 | 张三 | 0001 | 数学 | 69 |
3 | 2005002 | 李四 | 0001 | 数学 | 86 |
create or replace function s_stu(s_xuxehao IN varchar2) return varchar2
as f_name student.name%TYPE;
begin
select name into f_name from student WHERE xuxehao=s_xuxehao;
return f_name;
end;
调用:
select s_stu('2005002')from dual;
不要把参数写成张三的xuxehao 因为有两个返回值,会报错;
请注意表的第二列的名字 是xuxehao,不是xuehao 建表是写错了,就这样了没改 。
二、不带参数的function (和带参数的基本一样 把参数删除就行)
create or replace function 函数名 return 返回值类型
as 返回值名称 返回值所在表中的位置%TYPE;
begin 函数主体;
return 返回值名称;
end;
代码:
create or replace function stu return varchar2
as s_fenshu student.fenshu%TYPE;
begin
select fenshu into s_fenshu from student where xuxehao='2005002';
return s_fenshu;
end;
分号什么的都不能少,少了就成了无效的函数