- 系统内置函数
- 数学运算函数
- 字符串函数
- 统计函数
- 日期函数
- 用户定义函数:存储在数据库中的代码块,可以把值返回到调用程序。调用时如同系统函数一样
- 参数模式
- 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 BEGIN12 <函数体> 13 [RETURN( <返回表达式> );]14 END[ <函数名> ]; 函数名> 返回表达式> 函数体> 返回值类型> 数据类型> 参数类型> 参数名3> 数据类型> 参数类型> 参数名2> 数据类型> 参数类型> 参数名1> 函数名>
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 BEGIN11 <函数语句序列> 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 ELSE10 SELECT COUNT(性别)INTO out_num;11 FROM XSB WHERE 性别=‘女';12 END IF13 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; 实参2> 实参1> 函数名> 变量名>
- 删除函数
1 DROP FUNCTION [ <用户方案名> .] <函数名> 2 eg:3 DROP FUNCTION count_num; 函数名> 用户方案名>