2018-07-13 14:54:46

 --1.创建一个包,包含一个为雇员加薪的过程,一个为雇员减薪的过程
CREATE OR REPLACE PACKAGE pac_test1
IS
PROCEDURE addsal(NO emp.empno%TYPE,addsal emp.sal%TYPE);
procedure minussal(no emp.empno%type,minussal emp.sal%type);
END; CREATE OR REPLACE PACKAGE body pac_test1
IS
PROCEDURE addsal(NO emp.empno%TYPE,addsal emp.sal%TYPE)
is
BEGIN
UPDATE emp SET sal=sal+addsal WHERE empno=NO;
end;
PROCEDURE minussal(NO emp.empno%TYPE,minussal emp.sal%TYPE)
IS
BEGIN
UPDATE emp SET sal=sal-minussal WHERE empno=NO;
end;
END; --2.编写一个过程,验证用户登陆。如果用户名、密码匹配,输出Y,否则输出N emp表中的ename为用户名 empno为密码
CREATE OR REPLACE PROCEDURE pro_test2(username VARCHAR2,PASSWORD NUMBER,flag out VARCHAR2)
IS
v_count number(2);
BEGIN
SELECT count(empno) INTO v_count FROM emp WHERE ename=username AND empno=PASSWORD;
IF v_count>0 THEN flag:='Y';
ELSE flag:='N';
END IF;
END; --3.编写一个函数,根据雇员编号,计算调整后的工资
如果该雇员从事经理工作,且工资大于3000,则工资上涨20%,否则上涨35%
其他情况均上涨10%,输出雇员编号、姓名、上涨后的工资 CREATE OR REPLACE FUNCTION fun_test3(NO emp.empno%TYPE) RETURN VARCHAR2
IS
v_ename emp.ename%TYPE;
v_sal emp.sal%TYPE;
v_newsal emp.sal%TYPE;
v_job emp.job%type;
v_info varchar2(100);
BEGIN
SELECT ename,sal,JOB INTO v_ename,v_sal,v_job FROM emp WHERE empno=NO;
IF upper(v_job)='MANAGER' THEN
IF v_sal>3000 THEN
v_newsal:=v_sal*1.2;
ELSE v_newsal:=v_sal*1.35;
END IF;
ELSE v_newsal:=v_sal*1.1;
END IF;
v_info:= NO || ',' || v_ename || ',' || v_newsal;
RETURN v_info;
end; --4.创建一个包
包中含有一个存储过程,实现涨工资的功能,输入雇员姓名,如果其工作年限超过20年,工资增加2000
工作年限在10-20年,工资增加1000,工作年限在5-10年,工资增加500,输出雇员姓名和增涨后的工资
包中还含有一个函数,实现输入工资,判断工资如果大于4500,返回1,否则返回0 CREATE OR REPLACE PACKAGE pac_test4
IS
PROCEDURE pro_addsal(NAME emp.ename%TYPE,info out VARCHAR2);
FUNCTION fun_sal(salary emp.sal%TYPE) RETURN NUMBER;
end; CREATE OR REPLACE PACKAGE body pac_test4
IS
PROCEDURE pro_addsal(NAME emp.ename%TYPE,info out VARCHAR2)
IS
v_year NUMBER(5);
v_sal emp.sal%TYPE;
BEGIN
SELECT trunc(months_between(SYSDATE,hiredate)/12),sal INTO v_year,v_sal FROM emp WHERE upper(ename)=upper(NAME);
IF v_year>20 THEN v_sal:=v_sal+2000;
elsif v_year>=10 THEN v_sal:=v_sal+1000;
elsif v_year>=5 THEN v_sal:=v_sal+500;
END IF;
info:=NAME || ','||v_sal;
end;
FUNCTION fun_sal(salary emp.sal%TYPE) RETURN NUMBER
IS
v_flag NUMBER(1);
BEGIN
IF salary>4500 THEN
v_flag:=1;
ELSE v_flag:=0;
END IF;
RETURN v_flag;
end;
end;

逆袭之旅DAY17.东软实训.Oracle.PLSQL.过程,函数,包,练习的更多相关文章

  1. 逆袭之旅DAY17.东软实训.Oracle.存储过程

    2018-07-13 09:08:36

  2. 逆袭之旅DAY16.东软实训.Oracle.匿名块

    2018-07-1216:41:19 六.匿名块 .定义匿名块: declare 定义部分: ---可选部分 begin 执行部分: ---必选部分 exception 异常处理部分: ---可选部分 ...

  3. 逆袭之旅DAY16.东软实训.Oracle.修改用户

    2018-07-12 15:49:51

  4. 逆袭之旅DAY16.东软实训.Oracle.索引

    2018-07-12 14:44:27 四.索引1.创建索引手动创建:create index 索引名 on 表名(列名,[列名,...])create table employee(pno numb ...

  5. 逆袭之旅DAY16.东软实训.Oracle.序列

    2018-07-12 14:07:44 序列 序列1.创建序列create sequence 序列名 [increment by n] ---步长 [start with n] ---序列的起始值 序 ...

  6. 逆袭之旅DAY15.东软实训.Oracle.约束、序列、视图、索引、用户管理、角色

    2018-07-11  08:26:00 有某个学生运动会比赛信息的数据库,保存了如下的表: 运动员sporter表:(运动员编号sporterid,运动员姓名name,运动员性别sex,所属系dep ...

  7. 逆袭之旅DAY14.东软实训.Oracle.多表连接、分组函数、子查询

    2018-07-10 08:29:55 思考应用场景 异常数据的测试 6.显示能挣得奖金的雇员的姓名.工资.奖金,并以工资和奖金降序排列.select ename,sal,commfrom empWH ...

  8. 逆袭之旅DAY13.东软实训.Oracle.简单的查询语句.限制.排序

    2018-07-09  21:34:00 一.简单查询: .查询数据表的所有列: SELECT * FROM 表名; SELECT 列名,列名.... FROM 表名; .起别名: SELECT 列名 ...

  9. 逆袭之旅.DAY07东软实训..封装~继承~抽象~final

    2018年7月3日.逆袭之旅DAY07 package day0703.exam1; /** * 狗狗类 使用权限修饰符private和public进行封装 * @author Administrat ...

随机推荐

  1. SpringBoot之profile的使用

    Profile配置是针对不同的环境提供不同的配置支持,比如,在开发环境的配置和测试环境下的配置不同,那么就可以使用Profile配置来实现该要求. 在你的src/main/resources下建立相应 ...

  2. Linux 中 MySQL常用命令

    一. 数据库登录mysql -uroot -p二..退出数据库quit 和 exit或ctrl + d三.数据库操作1. 查看所有数据库 show databases;2. 查看当前使用的数据库sel ...

  3. AtCoder Regular Contest 100 Equal Cut

    Equal Cut 思路: 枚举中间那个分界点,然后两边找使得切割后差值最小的点,这个可以用双指针 代码: #include<bits/stdc++.h> using namespace ...

  4. Python 读写操作Excel —— 安装第三方库(xlrd、xlwt、xlutils、openpyxl)

    数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件.因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道. 如果仅仅是要以表单形式保存数据,可以借助 ...

  5. 编写脚本,出现 TypeError: exceptions must be old-style classes or derived from BaseException, not unicode怎样解决?

    小编使用robot framework,在编写安卓自动化脚本时,出现这样的情况: 在网上搜了好久,发现都是python的解决方法,到底怎样解决robot里面的问题呢?最终发现: (1)代码中我是这样写 ...

  6. (转)c# String与StringBuilder

    阅读目录 1.什么时候用String?什么时候用StringBuilder? 2.String与StringBuilder的区别 总结   1.什么时候用String?什么时候用StringBuild ...

  7. Go语言学习之4 递归&闭包&数组切片&map&锁

    主要内容: 1. 内置函数.递归函数.闭包2. 数组与切片3. map数据结构4. package介绍 5. 排序相关 1. 内置函数.递归函数.闭包 1)内置函数 (1). close:主要用来关闭 ...

  8. Spring Boot入门第五天:使用JSP

    原文链接 1.在pom.xml文件中添加依赖: <!-- Servlet依赖 --> <dependency> <groupId>javax.servlet< ...

  9. c# HTML中提取图片地址

    public class HtmlHelper    {        /// <summary>        /// HTML中提取图片地址        /// </summa ...

  10. 手动脱UPX压缩壳

    示例程序演示 样例程序选择win7自带的notepad.exe,该程序原本是没有加壳的: 拷贝notepad.exe文件一个副本,重命名为notepad - upx.exe,我们对notepad - ...