条件分支结构、循环控制结构和存储过程--分页存储过程oracle
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
条件分支结构、循环控制结构和存储过程--分页存储过程oracle
条件分支结构案例
1、编写一个过程,可以输入一个雇员姓名,如果该雇员的工资低于2000,就给该雇员工资增加10%。
/*
结构:
IF 条件THEN
执行语句;
END IF;
*/
CREATE OR REPLACE PROCEDURE add_sal_prc(p_name IN VARCHAR2) IS
n_sal myemp.sal%TYPE;
BEGIN
SELECT sal INTO n_sal
FROM myemp WHERE ename = p_name;
IF n_sal < 2000 THEN
UPDATE myemp
SET sal = sal * (1 + 0.1)
WHERE ename = p_name;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.put_line('未找到相关信息.');
END add_sal_prc;
/
2、编写一个过程,在myemp表中,如果某个雇员的工资低于2000,就给该雇员工资增加10%。
CREATE OR REPLACE PROCEDURE update_myemp_sal_prc IS CURSOR c_test IS
SELECT * FROM myemp FOR UPDATE;
BEGIN
FOR var_data IN c_test LOOP
IF var_data.sal < 2000 THEN
UPDATE myemp
SET sal = sal * 1.1
WHERE CURRENT OF c_test;
END IF;
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.put_line('未找到相关信息.');
END update_myemp_sal_prc;
/
3、编写一个过程,可以输入一个雇员姓名,如果该雇员的奖金不是0,就在原来的基础上增加100,如果奖金是0,就把该奖金设置为200;
/*
结构:
IF 条件THEN
执行语句;
ELSE
执行语句;
END IF;
*/
CREATE OR REPLACE PROCEDURE
update_myemp_user_comm_prc(p_name IN VARCHAR2) IS
comm_tmp m%TYPE;
BEGIN
SELECT NVL(comm, 0) comm
INTO comm_tmp
FROM myemp
WHERE ename = p_name;
IF comm_tmp != 0 THEN
UPDATE myemp
SET comm = comm + 100
WHERE ename = p_name;
ELSE
UPDATE myemp
SET comm = 200
WHERE ename = p_name;
END IF;
END update_myemp_user_comm_prc;
/
4、编写一个过程,在myemp表中,如果该雇员的奖金不是0,就在原来的基础上增加100,如果奖金是0,就把该奖金设置为200;
CREATE OR REPLACE PROCEDURE update_myemp_comm_prc IS CURSOR c_test IS
SELECT ename, sal,
NVL(comm, 0) comm
FROM myemp FOR UPDATE;
BEGIN
FOR var_data IN c_test LOOP
IF var_m != 0 THEN
UPDATE myemp
SET comm = comm + 100
WHERE CURRENT OF c_test;
ELSE
UPDATE myemp
SET comm = 200
WHERE CURRENT OF c_test;
END IF;
END LOOP;
END update_myemp_comm_prc;
/
5、编写一个过程,可以输入一个雇员编号,如果该雇员的职位是PRESIDENT 就给他的工资增加1000,如果该雇员的职位是MANAGER就给他的工资的增加500,其它职位的雇员的工资增加200;
/*
结构:
IF 条件THEN
执行语句;
ELSIF 条件THEN
执行语句;
.
.
.
ELSE
执行语句;
END IF;
*/
CREATE OR REPLACE PROCEDURE modify_sal_prc(p_empno IN INTEGER) IS
v_job myemp.job%TYPE;
BEGIN
SELECT job INTO v_job
FROM myemp
WHERE empno = p_empno;
IF v_job = 'PRESIDENT' THEN
UPDATE myemp
SET sal = sal + 1000
WHERE empno = p_empno;
ELSIF v_job = 'MANAGER' THEN
UPDATE myemp
SET sal = sal + 500
WHERE empno = p_empno;