
5.7 综合案例——Oracle函数的使用
本章为读者介绍了大量的Oracle函数,包括数学函数、字符串函数、日期和时间函数和系统函数。读者应该在实践过程中深入了解、掌握这些函数。不同版本的Oracle之间的函数可能会有微小的差别,使用时需要查阅对应版本的参考手册,但大部分函数功能在不同版本的Oracle之间是一致的。接下来,将给出一个使用各种Oracle函数的综合案例。
1.案例目的
使用各种函数操作数据,掌握各种函数的作用和使用方法。
2.案例操作过程
01 使用数学函数DBMS_RANDOM.VALUE()生成2个10以内的随机数。
数学函数DBMS_RANDOM.VALUE(x, y)产生1~10的随机数,输入语句如下:

结果可以看到,DBMS_RANDOM.VALUE(1, 10)产生了1~10的随机数。
02 使用SIN()、COS()、TAN()函数计算三角函数值,并将计算结果转换成整数值。
Oracle中的三角函数可以计算正弦、余弦和正切,执行过程如下:

03 创建表,并使用字符串和日期函数,对字段值进行操作。
(1)创建表member,其中包含3个字段,分别为GENERATED BY DEFAULT AS IDENTITY约束的m_id字段,VARCHAR2类型的m_FN字段,VARCHAR2类型的m_LN字段,DATE类型的m_birth字段和VARCHAR2类型的m_info字段。
(2)插入一条记录,m_id值为默认,m_FN值为“Halen”,m_LN值为“Park”,m_birth值为1970-06-29,m_info值为“GoodMan”。
(3)返回m_FN的长度,返回第一条记录中的人的全名,将m_info字段值转换成小写字母。将m_info的值反向输出。
(4)计算第一条记录中人的年龄,并计算m_birth字段中的值在那一年中的位置,按照“YYYY-MM-DD”格式输出时间值。
(5)插入一条新的记录,m_FN值为“Samuel”,m_LN值为“Green”,m_birth值为系统当前时间,m_info为GoodWoman。使用LAST_INSERT_ID()查看最后插入的ID值。
操作过程如下:
(1)创建表member,输入语句如下:

(2)插入一条记录,输入语句如下:

使用SELECT语句查看插入结果,

(3)返回m_FN的长度,返回第1条记录中人的全名,将m_info字段值转换成小写字母,将m_info的全部改为大写输出。输入SQL语句,执行结果如下:

(4)计算第一条记录中人的年龄,并计算m_birth字段中的值在那一年中的位置,按照'YYYY-MM-DD'格式输出时间值。

语句执行结果如下:

(5)插入一条新的记录,m_FN值为“Samuel”,m_LN值为“Green”,m_birth值为系统当前时间,m_info值为“GoodWoman”。使用COUNT(*)查看记录数。

使用SELECT语句查看插入结果:

可以看到,表中现在有两条记录,接下来使用NLS_CHARSET_ID()函数查看数据表中的记录数,输入语句如下:

最后插入的为第二条记录,因此返回值为2。