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

上传人:f****u 文档编号:109719205 上传时间:2019-10-27 格式:DOC 页数:16 大小:68KB
返回 下载 相关 举报
条件分支结构.循环控制结构和存储过程--分页存储过程oracle资料_第1页
第1页 / 共16页
条件分支结构.循环控制结构和存储过程--分页存储过程oracle资料_第2页
第2页 / 共16页
条件分支结构.循环控制结构和存储过程--分页存储过程oracle资料_第3页
第3页 / 共16页
条件分支结构.循环控制结构和存储过程--分页存储过程oracle资料_第4页
第4页 / 共16页
条件分支结构.循环控制结构和存储过程--分页存储过程oracle资料_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《条件分支结构.循环控制结构和存储过程--分页存储过程oracle资料》由会员分享,可在线阅读,更多相关《条件分支结构.循环控制结构和存储过程--分页存储过程oracle资料(16页珍藏版)》请在金锄头文库上搜索。

1、条件分支结构、循环控制结构和存储过程-分页存储过程oracle条件分支结构案例1、编写一个过程,可以输入一个雇员姓名,如果该雇员的工资低于2000,就给该雇员工资增加10%。/*结构:IF 条件 THEN执行语句;END IF;*/CREATE OR REPLACE PROCEDURE add_sal_prc(p_name IN VARCHAR2) ISn_sal myemp.sal%TYPE;BEGINSELECT sal INTO n_sal FROM myemp WHERE ename = p_name;IF n_sal 2000 THENUPDATE myemp SET sal = s

2、al * (1 + 0.1) WHERE ename = p_name;END IF;EXCEPTIONWHEN NO_DATA_FOUND THENDBMS_OUTPUT.put_line(未找到相关信息.);END add_sal_prc;/2、编写一个过程,在myemp表中,如果某个雇员的工资低于2000,就给该雇员工资增加10%。CREATE OR REPLACE PROCEDURE update_myemp_sal_prc ISCURSOR c_test ISSELECT * FROM myemp FOR UPDATE;BEGINFOR var_data IN c_test LOOP

3、IF var_data.sal 2000 THENUPDATE myemp SET sal = sal * 1.1 WHERE CURRENT OF c_test;END IF;END LOOP;EXCEPTIONWHEN NO_DATA_FOUND THENDBMS_OUTPUT.put_line(未找到相关信息.);END update_myemp_sal_prc;/3、编写一个过程,可以输入一个雇员姓名,如果该雇员的奖金不是0,就在原来的基础上增加100,如果奖金是0,就把该奖金设置为200;/*结构:IF 条件 THEN执行语句;ELSE 执行语句;END IF;*/CREATE OR

4、 REPLACE PROCEDURE update_myemp_user_comm_prc(p_name IN VARCHAR2) IScomm_tmp m%TYPE;BEGINSELECT NVL(comm, 0) comm INTO comm_tmpFROM myempWHERE ename = p_name;IF comm_tmp != 0 THENUPDATE myemp SET comm = comm + 100 WHERE ename = p_name;ELSEUPDATE myemp SET comm = 200 WHERE ename = p_name;END IF;END u

5、pdate_myemp_user_comm_prc;/4、编写一个过程,在myemp表中,如果该雇员的奖金不是0,就在原来的基础上增加100,如果奖金是0,就把该奖金设置为200;CREATE OR REPLACE PROCEDURE update_myemp_comm_prc ISCURSOR c_test ISSELECT ename, sal, NVL(comm, 0) comm FROM myemp FOR UPDATE;BEGINFOR var_data IN c_test LOOPIF var_m != 0 THENUPDATE myemp SET comm = comm + 10

6、0WHERE CURRENT OF c_test;ELSEUPDATE 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 PROC

7、EDURE modify_sal_prc(p_empno IN INTEGER) ISv_job myemp.job%TYPE;BEGINSELECT job INTO v_job FROM myemp WHERE empno = p_empno;IF v_job = PRESIDENT THENUPDATE myemp SET sal = sal + 1000 WHERE empno = p_empno;ELSIF v_job = MANAGER THENUPDATE myemp SET sal = sal + 500 WHERE empno = p_empno;ELSEUPDATE mye

8、mp SET sal = sal + 200 WHERE empno = p_empno;END IF;END modify_sal_prc;/扩展:如果是对所有雇员的工资进行修改,应该使用游标,请参考第2或第4题。循环语句1、循环语句LOOP案例,LOOP循环语句至少会被执行一次;/*结构 : LOOP循环体;退出循环条件; END LOOP;LOOP循环至少会被执行一 次*/CREATE OR REPLACE PROCEDURE loop_demo_prc(p_name IN VARCHAR2) ISi_id INTEGER := 1;BEGINLOOPINSERT INTO tb_log

9、in VALUES (i_id, p_name);i_id := i_id + 1;EXIT WHEN i_id = 11;END LOOP;END loop_demo_prc;2、循环语句while案例/*结构 : while 循环条件 LOOP循环体END LOOP;*/CREATE OR REPLACE PROCEDURE while_demo_prc(p_name IN VARCHAR2) ISi_id INTEGER := 11;BEGINwhile i_id num1*/CREATE OR REPLACE PROCEDURE for_demo_prc(p_name IN VARCH

10、AR2) ISi_id INTEGER := 21;BEGINFOR i IN 21 . 31 LOOPINSERT INTO tb_login VALUES (i_id, p_name);i_id := i_id + 1;END LOOP;END for_demo_prc;/4、循环语句GOTO案例建议尽量不要使用/*结构:LOOPIF 条件 THENGOTO 标识;END IF;改变条件的语句;其它执行语句;END LOOP;*/DECLAREi_num INT := 1;BEGINLOOPIF i_num 10 THENGOTO flg;END IF;DBMS_OUTPUT.put_li

11、ne(i_num = | i_num);i_num := i_num + 1;END LOOP;DBMS_OUTPUT.put_line(循环结束);END;/顺序控制语句1、顺序控制语句NULL案例;/*说明:NULL语句不会执行任何操作,使用NULL语句的好处主要是提高PL/SQL的可读性*/DECLAREv_name myemp.ename%TYPE;n_sal myemp.sal%TYPE;BEGINSELECT ename, salINTO v_name, n_sal FROM myemp WHERE empno = &empno;IF n_sal 3000 THENUPDATE m

12、yemp SET comm = sal * 0.1 WHERE ename = v_name;ELSENULL;END IF;END;/分页储存过程无返回值的存储过程:1、现有一张表books,表结构如下:-表booksDROP TABLE books PURGE;CREATE TABLE books(book_id NUMBER(4),book_name VARCHAR2(50),press VARCHAR2(50),CONSTRAINT PK_bookID PRIMARY KEY(book_id);请编写一个存储过程,可以向表books添加书,要求通过java程序调用该过程。存储过程:ad

13、d_book_prc()-存储过程add_book_prcDROP PROCEDURE add_book_prc;CREATE PROCEDURE add_book_prc(p_bookID IN NUMBER,p_bookName IN VARCHAR2,p_press IN VARCHAR2) ISBEGININSERT INTO books VALUES(p_bookID,p_bookName,p_press);END add_book_prc;/输入内容过滤package org.lxh.addbook;import java.io.BufferedReader;import java

14、.io.IOException;import java.io.InputStreamReader;public class InputData private BufferedReader buf = null;public InputData() / 将字节输入流转换为字符流存放在缓冲区中this.buf = new BufferedReader(new InputStreamReader(System.in);public String getString(String info) / 读取输入的数据String str = null;System.out.print(info);/ 打印提示输入的信息try str =

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号