源码-Oracle数据库管理-第十二章-使用PL/SQL创建Oracle程序-Part 1(PL/SQL基础)
来源:互联网 发布:网络女神小茉莉 编辑:程序博客网 时间:2024/05/21 04:40
PL/SQL编程在之前专门学过,这次当做复习了。
--第12章 使用PL/SQL创建Oracle程序--12.1 PL/SQL基础--代码12.1 使用PL/SQL进行职位调整DECLARE --定义变量 v_newjob VARCHAR2(20); v_ename VARCHAR(20) :='李明';BEGIN v_newjob:='工程师'; --1,更新员工李明的职位 UPDATE emp SET job = v_newjob WHERE ename = v_ename; --2,判断刚才的UPDATE是否执行成功 IF SQL%NOTFOUND THEN --3,如果没有执行成功, INSERT INTO emp (empno, ename, job, hiredate, sal, deptno) VALUES (8000, v_ename, v_newjob, SYSDATE, 3000, 20); END IF; --4,提交事务 COMMIT;END;select * from emp;delete from emp where ename='李明';--12.2 与SQL语言整合--下面的语句块来创建一个表emp_his;--代码12.2 在PL/SQL中执行DDL语句(直接调用,会触发异常)BEGIN CREATE TABLE emp_his AS SELECT * FROM emp;END;--代码12.2 在PL/SQL中执行DDL语句(使用动态SQL,可正确执行)DECLARE v_SQL VARCHAR2(100); --定义字符串变量,用来保存SQL语句BEGIN v_SQL:='CREATE TABLE emp_his AS SELECT * FROM emp'; EXECUTE IMMEDIATE v_SQL; --执行动态SQL语句,成功创建表 END;select * from emp_his;--移除emp_hisDROP TABLE emp_his;DECLARE v_SQL VARCHAR2(100); --定义字符串变量,用来保存SQL语句 v_emp_his_count NUMBER;BEGIN v_SQL:='CREATE TABLE emp_his AS SELECT * FROM emp'; EXECUTE IMMEDIATE v_SQL; --SELECT COUNT(*) INTO v_emp_his_count FROM emp_his;END;--12.1.3 提高程序性能--12.1.4 模块化应用程序设计--代码12.3 员工管理系统包规范设计CREATE OR REPLACE PACKAGE emppkg IS -- 作者 : ADMINISTRATOR -- 创建日期 : 2013-1-27 16:08:18 -- 功能 : 管理员工、部门和薪资 -- 公共函数,提供员工调薪比率 FUNCTION get_sal_ratio(p_job VARCHAR2) RETURN NUMBER; --添加新的员工 PROCEDURE add_employee(empno VARCHAR2,ename VARCHAR2,sla NUMBER,comm NUMBER,deptno NUMBER) ; --添加新的部门 PROCEDURE add_dept(deptno VARCHAR2,dname VARCHAR2,LOC VARCHAR2);END emppkg;/--代码12.4 员工管理系统包体实现CREATE OR REPLACE PACKAGE BODY emppkg IS --获取调薪比率的函数 FUNCTION get_sal_ratio(p_job VARCHAR2) RETURN NUMBER AS v_result NUMBER(7, 2); BEGIN IF p_job = '职员' THEN --如果为职员,加薪10% v_result := 0.10; ELSIF p_job = '销售人员' THEN --如果为销售职员,加薪12% v_result := 0.12; ELSIF p_job = '经理' THEN --如果为经理,加薪15% v_result := 0.15; ELSE --否则,加薪8% v_result := 0.08; END IF; RETURN v_result; END get_sal_ratio; --添加新的员工 PROCEDURE add_employee(empno VARCHAR2, ename VARCHAR2, sla NUMBER, comm NUMBER, deptno NUMBER) AS BEGIN NULL; END add_employee; --添加新的部门 PROCEDURE add_dept(deptno VARCHAR2, dname VARCHAR2, LOC VARCHAR2) AS BEGIN NULL; END add_dept;END emppkg;/--代码12.5 创建员工对象(执行过程中遇到错误:ORA-02303)CREATE OR REPLACE TYPE emp_obj AS OBJECT ( empno NUMBER (4), --员工编号属性 ename VARCHAR2 (10), --员工名称属性 job VARCHAR (9), --员工职别属性 sal NUMBER (7, 2), --员工薪水属性 deptno NUMBER (2), --部门编号属性 --加薪方法 MEMBER PROCEDURE addsalary (ratio NUMBER));--定义对象类型体,实现对象方法CREATE OR REPLACE TYPE BODY emp_objAS --实现对象方法 MEMBER PROCEDURE addsalary (ratio NUMBER) IS BEGIN sal := sal * (1 + ratio); --加上特定比例的薪水 END;END;
0 0
- 源码-Oracle数据库管理-第十二章-使用PL/SQL创建Oracle程序-Part 1(PL/SQL基础)
- 源码-Oracle数据库管理-第十二章-使用PL/SQL创建Oracle程序-Part 2(PL/SQL语言概览)
- 源码-Oracle数据库管理-第十二章-使用PL/SQL创建Oracle程序-Part 3(PL/SQL语言概览)
- 源码-Oracle数据库管理-第十二章-使用PL/SQL创建Oracle程序-Part 4(PL/SQL语言概览)
- 源码-Oracle数据库管理-第十二章-使用PL/SQL创建Oracle程序-Part 5(PL/SQL语言概览)
- 源码-Oracle数据库管理-第十四章-记录与集合-Part 1(使用PL/SQL记录)
- 源码-Oracle数据库管理-第十四章-记录与集合-Part 2(使用PL/SQL记录)
- 源码-Oracle数据库管理-第十三章-子程序和包-Part 4(定义PL/SQL包)
- ORACLE PL/SQL 基础
- ORACLE PL/SQL 基础
- oracle pl/sql 基础
- oracle pl/sql 基础
- Oracle PL/SQL 基础
- Oracle PL/SQL 基础
- oracle PL/SQL 基础
- Oracle PL/SQL基础
- Oracle--PL/SQL基础
- Oracle-PL/SQL基础
- 集合框架
- 每步取模
- 公钥和私钥的区别
- 使用NotificationCompat兼容包来处理消息通知
- Python--operateor 模块
- 源码-Oracle数据库管理-第十二章-使用PL/SQL创建Oracle程序-Part 1(PL/SQL基础)
- MFC CImage 指针访问问题
- React实现动画效果
- 用C语言指针作为函数返回值
- ALAssetsLibrary
- 【工具】百度云破解版不用会员高速下载 分享
- Spring Data
- LeetCode 29. Divide Two Integers
- 【ilcplex】IloEnv