oracle 学习(三)pl/sql语言函数
- 系统内置函数
- 数学运算函数
- 字符串函数
- 统计函数
- 日期函数
- 用户定义函数:存储在数据库中的代码块,可以把值返回到调用程序。调用时如同系统函数一样
- 参数模式
- IN模式:表示该参数时输入给函数的参数
- OUT模式:表示该参数在函数中被赋值,可以传给函数调用程序
- IN OUT模式:表示该参数既可以传值也可以被赋值
- 创建函数
-
1 CREATE[OR REPLACE]FOUNCTION<函数名> 2 ( 3 <参数名1>,<参数类型><数据类型>, 4 <参数名2>,<参数类型><数据类型>, 5 <参数名3>,<参数类型><数据类型>, 6 ... 7 ) 8 RETURN<返回值类型> /*定义返回值类型*/ 9 {IS|AS} 10 [声明变量] 11 BEGIN 12 <函数体> 13 [RETURN(<返回表达式>);] 14 END[<函数名>];
1 CREATE OR REPLACE FUNCTION 函数名称 2 ( 3 in_pmt IN char, 4 out_pmt OUT char, 5 in_out_pmt IN OUT char 6 ) 7 RETURN char 8 AS 9 return_char char; 10 BEGIN 11 <函数语句序列> 12 RETURN(return_char); 13 END[函数名称];
1 CREATE OR REPLACE FUNCTION average(cnum IN char) 2 RETURN number 3 AS 4 avger number; 5 BEGIN 6 SELECT AVG(成绩)INTO avger 7 FROM CJB 8 WHERE 课程号=cnum 9 GROUP BY 课程号; 10 RETURN(avger); 11 END;
- 语法要求
1 函数语句序列中可能出现的情况 2 IN模式:传递参数 对应变量为右值 3 OUT模式:在函数中被赋值 对应变量为左值
- 调用函数
1 CREATE OR REPLACE FUNCTION count_num(in_sex IN) 2 RETURN number 3 AS 4 out_num number; 5 BEGIN 6 IF in_sex='男'THEN 7 SELECT COUNT(性别)INTO out_num; 8 FROM XSB WHERE 性别=‘男'; 9 ELSE 10 SELECT COUNT(性别)INTO out_num; 11 FROM XSB WHERE 性别=‘女'; 12 END IF 13 RETURN(out_num); 14 END count_num;
1 无论是在命令行还是在程序语句中,都可以通过名称直接在表达式中调用函数 2 格式: 3 <变量名>:=<函数名>[(<实参1>,<实参2>,..)] 4 5 DECLARE 6 girl_num number; 7 BEGIN 8 girl_num:=count_num('女'); 9 DBMS_OUTPUT.PUT_LINE(TO_CHAR(girl_num)); 10 END;
- 删除函数
1 DROP FUNCTION [<用户方案名>.]<函数名> 2 eg: 3 DROP FUNCTION count_num;