条件分支结构、循环控制结构和存储过程--分页存储过程oracle

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档