oracle存储过程代码实例一(7)

2019-08-30 21:24

IF NOT EXIST_EMP(P_EMPNO) THEN

INSERT INTO EMP(EMPNO,ENAME,JOB,SAL) VALUES(P_EMPNO,P_ENAME,P_JOB,P_SAL); COMMIT;

V_EMP_COUNT:=V_EMP_COUNT+1; V_MESSAGE:='雇员'||P_EMPNO||'已插入!'; ELSE

V_MESSAGE:='雇员'||P_EMPNO||'已存在,不能插入!'; END IF;

SHOW_MESSAGE; EXCEPTION

WHEN OTHERS THEN

V_MESSAGE:='雇员'||P_EMPNO||'插入失败!'; SHOW_MESSAGE; END INSERT_EMP;

--------------------------- 删除雇员过程 --------------------

PROCEDURE DELETE_EMP(P_EMPNO NUMBER) IS BEGIN

IF EXIST_EMP(P_EMPNO) THEN

DELETE from EMP WHERE EMPNO=P_EMPNO; COMMIT;

V_EMP_COUNT:=V_EMP_COUNT-1; V_MESSAGE:='雇员'||P_EMPNO||'已删除!'; ELSE

V_MESSAGE:='雇员'||P_EMPNO||'不存在,不能删除!'; END IF;

SHOW_MESSAGE; EXCEPTION

WHEN OTHERS THEN

V_MESSAGE:='雇员'||P_EMPNO||'删除失败!'; SHOW_MESSAGE; END DELETE_EMP;

--------------------------------------- 修改雇员工资过程 ------------------------------------

PROCEDURE CHANGE_EMP_SAL(P_EMPNO NUMBER,P_SAL NUMBER) IS

BEGIN

IF (P_SAL>V_MAX_SAL OR P_SAL

V_MESSAGE:='雇员'||P_EMPNO||'不存在,不能修改工资!'; ELSE

UPDATE EMP SET SAL=P_SAL WHERE EMPNO=P_EMPNO; COMMIT;

V_MESSAGE:='雇员'||P_EMPNO||'工资已经修改!'; END IF;

SHOW_MESSAGE; EXCEPTION

WHEN OTHERS THEN

V_MESSAGE:='雇员'||P_EMPNO||'工资修改失败!'; SHOW_MESSAGE; END CHANGE_EMP_SAL;

---------------------------- 显示信息过程 ---------------------------- PROCEDURE SHOW_MESSAGE IS BEGIN

DBMS_OUTPUT.PUT_LINE('提示信息:'||V_MESSAGE); END SHOW_MESSAGE;

------------------------ 判断雇员是否存在函数 ------------------- FUNCTION EXIST_EMP(P_EMPNO NUMBER) RETURN BOOLEAN IS

V_NUM NUMBER; --局部变量 BEGIN

SELECT COUNT(*) INTO V_NUM from EMP WHERE EMPNO=P_EMPNO; IF V_NUM=1 THEN RETURN TRUE; ELSE

RETURN FALSE; END IF;

END EXIST_EMP; -----------------------------

END EMP_PK;

CREATE OR REPLACE PACKAGE EMP_PK --包头部分 IS

V_EMP_COUNT NUMBER(5); --雇员人数

PROCEDURE INIT(P_MAX NUMBER,P_MIN NUMBER); --初始化 PROCEDURE LIST_EMP; --显示雇员列表

PROCEDURE INSERT_EMP(P_EMPNO NUMBER,P_ENAMEVARCHAR2,P_JOB VARCHAR2, P_SAL NUMBER); --插入雇员

PROCEDURE DELETE_EMP(P_EMPNO NUMBER); --删除雇员

PROCEDURE CHANGE_EMP_SAL(P_EMPNO NUMBER,P_SAL NUMBER); --修改雇员工资 END EMP_PK;

/CREATE OR REPLACE PACKAGE BODY EMP_PK --包体部分 IS

V_MESSAGE VARCHAR2(50); --显示信息 V_MAX_SAL NUMBER(7); --工资上限 V_MIN_SAL NUMBER(7); --工资下限

FUNCTION EXIST_EMP(P_EMPNO NUMBER) RETURN BOOLEAN; --判断雇员是否存在函数

PROCEDURE SHOW_MESSAGE; --显示信息过程 ------------------------------- 初始化过程 ---------------------------- PROCEDURE INIT(P_MAX NUMBER,P_MIN NUMBER) IS BEGIN

SELECT COUNT(*) INTO V_EMP_COUNT from EMP; V_MAX_SAL:=P_MAX; V_MIN_SAL:=P_MIN;

V_MESSAGE:='初始化过程已经完成!'; SHOW_MESSAGE; END INIT;

---------------------------- 显示雇员列表过程 --------------------- PROCEDURE LIST_EMP IS BEGIN

DBMS_OUTPUT.PUT_LINE('姓名 职务 工资'); FOR emp_rec IN (SELECT * from EMP) LOOP

DBMS_OUTPUT.PUT_LINE(RPAD(emp_rec.ename,10,'')||RPAD(emp_rec.job,10,' ')||TO_CHAR(emp_rec.sal)); END LOOP;

DBMS_OUTPUT.PUT_LINE('雇员总人数'||V_EMP_COUNT); END LIST_EMP;

----------------------------- 插入雇员过程 ----------------------------- PROCEDUREINSERT_EMP(P_EMPNO VARCHAR2,P_SAL NUMBER) IS BEGIN

IF NOT EXIST_EMP(P_EMPNO) THEN INSERT COMMIT;

V_EMP_COUNT:=V_EMP_COUNT+1; V_MESSAGE:='雇员'||P_EMPNO||'已插入!'; ELSE

V_MESSAGE:='雇员'||P_EMPNO||'已存在,不能插入!'; END IF;

SHOW_MESSAGE; EXCEPTION

WHEN OTHERS THEN

V_MESSAGE:='雇员'||P_EMPNO||'插入失败!'; SHOW_MESSAGE; END INSERT_EMP;

--------------------------- 删除雇员过程 -------------------- PROCEDURE DELETE_EMP(P_EMPNO NUMBER) IS BEGIN

INTO

EMP(EMPNO,ENAME,JOB,SAL)

VALUES(P_EMPNO,P_ENAME,P_JOB,P_SAL);

NUMBER,P_ENAMEVARCHAR2,P_JOB

IF EXIST_EMP(P_EMPNO) THEN

DELETE from EMP WHERE EMPNO=P_EMPNO; COMMIT;

V_EMP_COUNT:=V_EMP_COUNT-1; V_MESSAGE:='雇员'||P_EMPNO||'已删除!'; ELSE

V_MESSAGE:='雇员'||P_EMPNO||'不存在,不能删除!'; END IF;

SHOW_MESSAGE; EXCEPTION

WHEN OTHERS THEN

V_MESSAGE:='雇员'||P_EMPNO||'删除失败!'; SHOW_MESSAGE; END DELETE_EMP;

--------------------------------------- 修改雇员工资过程 ------------------------------------ PROCEDURE CHANGE_EMP_SAL(P_EMPNO NUMBER,P_SAL NUMBER) IS BEGIN

IF (P_SAL>V_MAX_SAL OR P_SAL

ELSIF NOT EXIST_EMP(P_EMPNO) THEN

V_MESSAGE:='雇员'||P_EMPNO||'不存在,不能修改工资!'; ELSE

UPDATE EMP SET SAL=P_SAL WHERE EMPNO=P_EMPNO; COMMIT;

V_MESSAGE:='雇员'||P_EMPNO||'工资已经修改!'; END IF;

SHOW_MESSAGE; EXCEPTION

WHEN OTHERS THEN

V_MESSAGE:='雇员'||P_EMPNO||'工资修改失败!'; SHOW_MESSAGE; END CHANGE_EMP_SAL;

---------------------------- 显示信息过程 ---------------------------- PROCEDURE SHOW_MESSAGE IS


oracle存储过程代码实例一(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:环己烷过氧化物分解技术

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: