oracle的plsql编程之过程全部案例

上传人:xiao****1972 文档编号:84086000 上传时间:2019-03-02 格式:DOCX 页数:9 大小:18.16KB
返回 下载 相关 举报
oracle的plsql编程之过程全部案例_第1页
第1页 / 共9页
oracle的plsql编程之过程全部案例_第2页
第2页 / 共9页
oracle的plsql编程之过程全部案例_第3页
第3页 / 共9页
oracle的plsql编程之过程全部案例_第4页
第4页 / 共9页
oracle的plsql编程之过程全部案例_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《oracle的plsql编程之过程全部案例》由会员分享,可在线阅读,更多相关《oracle的plsql编程之过程全部案例(9页珍藏版)》请在金锄头文库上搜索。

1、- 声明游标;CURSOR cursor_name IS select_statement-For 循环游标-(1)定义游标-(2)定义游标变量-(3)使用for循环来使用这个游标declare -类型定义 cursor c_job is select empno,ename,job,sal from emp where job=MANAGER; -定义一个游标变量v_cinfo c_emp%ROWTYPE ,该类型为游标c_emp中的一行数据类型 c_row c_job%rowtype;begin for c_row in c_job loop dbms_output.put_line(c_

2、row.empno|-|c_row.ename|-|c_row.job|-|c_row.sal); end loop;end; -Fetch游标-使用的时候必须要明确的打开和关闭declare -类型定义 cursor c_job is select empno,ename,job,sal from emp where job=MANAGER; -定义一个游标变量 c_row c_job%rowtype;begin open c_job; loop -提取一行数据到c_row fetch c_job into c_row; -判读是否提取到值,没取到值就退出 -取到值c_job%notfoun

3、d 是false -取不到值c_job%notfound 是true exit when c_job%notfound; dbms_output.put_line(c_row.empno|-|c_row.ename|-|c_row.job|-|c_row.sal); end loop; -关闭游标 close c_job;end;-1:任意执行一个update操作,用隐式游标sql的属性%found,%notfound,%rowcount,%isopen观察update语句的执行情况。 begin update emp set ENAME=ALEARK WHERE EMPNO=7469; if

4、 sql%isopen then dbms_output.put_line(Openging); else dbms_output.put_line(closing); end if; if sql%found then dbms_output.put_line(游标指向了有效行);-判断游标是否指向有效行 else dbms_output.put_line(Sorry); end if; if sql%notfound then dbms_output.put_line(Also Sorry); else dbms_output.put_line(Haha); end if; dbms_ou

5、tput.put_line(sql%rowcount); exception when no_data_found then dbms_output.put_line(Sorry No data); when too_many_rows then dbms_output.put_line(Too Many rows); end;declare empNumber emp.EMPNO%TYPE; empName emp.ENAME%TYPE; begin if sql%isopen then dbms_output.put_line(Cursor is opinging); else dbms_

6、output.put_line(Cursor is Close); end if; if sql%notfound then dbms_output.put_line(No Value); else dbms_output.put_line(empNumber); end if; dbms_output.put_line(sql%rowcount); dbms_output.put_line(-); select EMPNO,ENAME into empNumber,empName from emp where EMPNO=7499; dbms_output.put_line(sql%rowc

7、ount); if sql%isopen then dbms_output.put_line(Cursor is opinging); else dbms_output.put_line(Cursor is Closing); end if; if sql%notfound then dbms_output.put_line(No Value); else dbms_output.put_line(empNumber); end if; exception when no_data_found then dbms_output.put_line(No Value); when too_many

8、_rows then dbms_output.put_line(too many rows); end; -2,使用游标和loop循环来显示所有部门的名称-游标声明declare cursor csr_dept is -select语句 select DNAME from Depth; -指定行指针,这句话应该是指定和csr_dept行类型相同的变量 row_dept csr_dept%rowtype;begin -for循环 for row_dept in csr_dept loop dbms_output.put_line(部门名称:|row_dept.DNAME); end loop;e

9、nd;-3,使用游标和while循环来显示所有部门的的地理位置(用%found属性)declare -游标声明 cursor csr_TestWhile is -select语句 select LOC from Depth; -指定行指针 row_loc csr_TestWhile%rowtype;begin -打开游标 open csr_TestWhile; -给第一行喂数据 fetch csr_TestWhile into row_loc; -测试是否有数据,并执行循环 while csr_TestWhile%found loop dbms_output.put_line(部门地点:|ro

10、w_loc.LOC); -给下一行喂数据 fetch csr_TestWhile into row_loc; end loop; close csr_TestWhile;end; select * from emp -4,接收用户输入的部门编号,用for循环和游标,打印出此部门的所有雇员的所有信息(使用循环游标)-CURSOR cursor_name(parameter,parameter,.) IS select_statement;-定义参数的语法如下:Parameter_name IN data_type:=|DEFAULT value declare CURSOR c_dept(p_deptNo number) is select * from emp where emp.depno=p_deptNo; r_emp emp%rowtype;begin for r_emp in c_dept(20) loop dbms_output.put_line(员工号:|r_e

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

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