Oracle(11g)数据库教程之十一:Oracle系统函数及自定义函数
准备工作:
先启动Oracle,并打开前期建立的数据库和表
查看每个表的结构:
一、系统函数
知识储备:DUAL是Oracle与数据字典一起自动创建的一个表,它只有一列:DUMMY,其数据类型为:VARCHAR2(1)。DUAL中只有一行数据:'X'。DUAL属于SYS模式,但所有用户都可以使用DUAL名称访问它。用SELECT计算常量表达式、伪列等值时常用该表,因为它只返回一行数据,而使用其它表时可能返回多个数据行。
1、数学函数
(1)、abs(); 求一个数的绝对值
(2)、sqrt(); 求一个数的平方根。sqrt是sqruar(平方,矩形) ,root(根)的缩写。
(3)、power() 幂运算
(4)、随机数
产生一个任意大小的随机数:
产生一个0~1之间的随机数
产生一个10~20之间的随机数
随机排序(每次的结果不一样,可以用来随机抽取:比如随机取5名同学,用来摇号或抽奖实际场景)
(5)、三角函数
(6)、ceil() 进一取整、 floor()舍一取整
(7)、trunc(x,y) 比较霸道,不管四舍五入,直接把x,的y位小数直接舍去。
(8)、round函数: round(数值,n):结果近似到小数点右侧的n位。
2、字符串函数
几个常用的字符串函数
(1)、字符串连接
(2)、字母大小写转换函数UPPER()和LOWER()
(3)、字符串长度
3、日期和时间函数
(1)、Oracle获取系统当前时间:
(2)、年、月、日
求每个同学的年龄
查询八月出生的学生信息
二、用户自定义函数(每个例子要运行出来,并理解每一行代码含义)
Oracle自定义函数的语法如下:
1. create or replace function 函数名(参数1 模式 参数类型)
2. return 返回值类型
3. as
4. 变量1 变量类型;
5. 变量2 变量类型;
6. begin
7. 函数体;
8. end 函数名;
参数的模式有3种:(如果没有注明, 参数默认的类型为 in.)
in: 为只读模式, 在函数中, 参数的值只能被引用, 不能被改变;
out: 为只写模式, 只能被赋值, 不能被引用;
in out: 可读可写.
例1、计算某一门课程全体学生的平均成绩(在Oracle自带的编辑环境)
运行:(函数调用时,可多举例不同学科的平均分)
例2、创建一个统计数据库中不同性别人数的函数
运行:
另外一种调用函数方式
例3、用函数count_num统计student表中有多少男同学。
删除函数:
drop function count_num;
或在界面
直接删除。