Oracle 包练习

Posted 千里江陵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 包练习相关的知识,希望对你有一定的参考价值。

 1 /*
 2 创建一个程序包,包里面实现如下功能
 3 1:构建一个过程,根据用户传入的最低工资计算出emp表中
 4   低于最低工资的人数及这些人员信息
 5 2:构建一个函数,根据传入的年月,计算该日期入职
 6   员工的人数
 7 */
 8 
 9 --包规范
10 create or replace package emp_controller
11 as
12        --创建一个ref游标
13        type emplist is ref cursor return emp%rowtype;
14 
15        procedure check_sal_less(v_min number,v_count out number,v_emplist out emplist);
16        
17        function count_same_year_emp(v_year number) return number;
18        
19 end;
20 
21 --包主体
22 create or replace package body emp_controller
23 as
24        --实现过程
25        procedure check_sal_less(v_min number,v_count out number,v_emplist out emplist)
26        as
27        begin
28            --根据传入的最低工资,计算出表中低于最低工资的人数
29            select count(*) into v_count from myemp
30            where sal < v_min;
31            
32            --将工资低于最低工资的人存放到游标中
33            --打开游标
34            open v_emplist for select * from myemp
35            where sal < v_min;
36        end;
37        
38        --实现函数
39        function count_same_year_emp(v_year number) return number
40        as
41            v_number number;
42        begin
43            --根据传入的年份来统计该年份入职的员工数量
44            select count(*) into v_number from myemp
45            where to_char(hiredate,yyyy) = v_year;
46            
47            return v_number;
48        end;
49 end;
50 
51 
52 --包程序测试
53 declare
54     v_count number;
55     v_emp emp_controller.emplist;
56     v_e myemp%rowtype;
57 begin
58     --根据传入的最低工资,计算出表中低于最低工资的人数
59     emp_controller.check_sal_less(2000,v_count,v_emp);
60     dbms_output.put_line(低于最低工资2000的人数有:||v_count||,分别是:);
61     loop
62       fetch v_emp into v_e;
63       exit when v_emp%notfound;
64       dbms_output.put_line(姓名:||v_e.ename||,薪水:||v_e.sal);
65       dbms_output.put_line(---------------------------------------);
66     end loop;
67 end;
68 
69 --包测试
70 declare
71     v_number number;
72 begin
73     --输出测试,直接调用函数,输出返回值
74     dbms_output.put_line(emp_controller.count_same_year_emp(1981));
75 end;

 

以上是关于Oracle 包练习的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Toad for Oracle 中使用自定义代码片段?

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

Python练习册 第 0013 题: 用 Python 写一个爬图片的程序,爬 这个链接里的日本妹子图片 :-),(http://tieba.baidu.com/p/2166231880)(代码片段

Client / Server Interoperability Support Matrix for Different Oracle Versions (Doc ID 207303.1)(代码片段

csharp Epicor标准练习片段

golang 去练习片段