PL/SQL课堂练习(过程、函数、包、触发器)
1、过程练习,掌握过程参数(in/out/in out)及调用环境
1.1)过程名字PROC_EMP(in hireYear,out manCount,in out commis_pct)
需求描述:
输入一个hireYear,计算出该年入职的员工数staffCount;
给定一个commis_pct,上述范围的职员如果没有提成(commission_pct)的,
用这个数作为他的提成,已有提成的,不做改动
上述范围职员的提成最大值用commis_pct参数返回
1.2)写一个匿名块来测试上述过程,要求:
对应的过程的3个参数,定义3个变量,并为变量赋值
1.3)调用上述过程,call Pro**(*)
1.4)打印3个变量
1.5)请分析结果是否正确
2、函数练习
根据输入的身高(cm)、体重(kg)判断一个人的体形是“正常、偏瘦、偏胖”
算法是:
体重指数(BMI) = 体重(公斤) / 身高的平方(平方米)
正常范围为18-25,低于18为体重不足,25-28为体重偏高,超过28为超重。公式男女适用。
2.1)定义函数Judge_BMI(身高,体重) return varchar2(30)
2.2)处理可能的异常(除零异常)
2.3)根据BMI的范围,返回结果参考:
您的身材很标准,有成为大众情人的潜力!
您看起来玉树凌风,如果加点肉,会帮助你抵御台风!
您看起来很有福相,如果有碳,您有可能创造在地震废墟中存活时间的新记录!
2.4)用select 【】 from dual测试上述函数
3、Package 练习
题目要求:
给定一个半径,计算周长和面积,并打印结果。
1、定义包头、包体
2、定义一个Public常量PI=3.1415926
3、定义并实现两个Function:circle(周长)和area(面积)
4、定义并实现一个Procedure:print,输出"PI=3.1415926,半径=**时,周长=**,面积=***"
5、写一个匿名块,测试上述的包
目的:掌握package的定义和实现,掌握package中的公用变量(常量)和私有变量的使用
-
-
-- Author : ADMINISTRATOR
-
-- Created : 2009-2-26 18:21:13
-
-- Purpose : 计算圆形周长面积。
-
-
-- Public type declarations
-
-- type <TypeName> is <Datatype>;
-
-
-- Public constant declarations
-
-
-- Public variable declarations
-
-
-
-- Public function and procedure declarations
-
-
-
END CountCircle;
-
-
-
-- Private type declarations
-
-
-- Private constant declarations
-
-
-- Private variable declarations
-
-
-
-- Function and procedure implementations
-
END;
-
-
END;
-
-
END;
-
END CountCircle;
4、触发器练习
4.1 为hr.employees表建个触发器trg_check_salary_adding
当要调整薪水时,每次幅度不可超过正负5%
4.2 建个触发器,记录每个Session的登录日志
步骤:
1)、建日志表 user_login_logs,字段(username,login_time,logout_time,ip_addr)
2)、写个database_event触发器,捕获用户的登录和登出事件,并插入到上表