ORACLE游标的应用
2016-04-08 09:21
375 查看
在oracle数据库中,可以使用游标浏览数据、更新数据和删除数据,接下来列举以几个简单的例子
通过使用游标既可以逐行检索结果集中的记录,又可以更新或删除当前游标行的数据如果要通过游标更新或删除数据,在定义游标时必须要带有FOR UPDATE子句其语句格式如下:
1.浏览数据
3.删除数据
delete语句的格式
以上内容参考其他书籍的例子所写
通过使用游标既可以逐行检索结果集中的记录,又可以更新或删除当前游标行的数据如果要通过游标更新或删除数据,在定义游标时必须要带有FOR UPDATE子句其语句格式如下:
CURSOR CURSOR_NAME IS SELECT_STATEMENT FOR UPDATE[ OF COLUMN_REFERENCE] [NOWAIT];
1.浏览数据
SET SERVEROUTPUT ON <span style="white-space:pre"> </span>DECLARE <span style="white-space:pre"> </span>--声明变量和游标 <span style="white-space:pre"> </span>V_SPECIALTY STUDENTS.SPECIALTY%TYPE; <span style="white-space:pre"> </span>V_SNAME STUDENTS.NAME%TYPE; <span style="white-space:pre"> </span>V_DOB STUDENTS.DOB%TYPE; <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>CURSOR STUDENTS_CUR <span style="white-space:pre"> </span>IS <span style="white-space:pre"> </span>SELECT NAME,SPECIALTY <span style="white-space:pre"> </span>FROM STUDENTS <span style="white-space:pre"> </span>WHERE SPECIALTY=V_SPECIALTY; <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>BEGIN <span style="white-space:pre"> </span>V_SPECIALTY:='&SPECIALTY'; <span style="white-space:pre"> </span>OPEN STUDENTS_CUR; <span style="white-space:pre"> </span>DBMS_OUTPUT.PUT_LINE('学生姓名<span style="white-space:pre"> </span>出生日期'); <span style="white-space:pre"> </span>LOOP <span style="white-space:pre"> </span>FETCH STUDENTS_CUR INTO V_SNAME,V_DOB; <span style="white-space:pre"> </span>EXIT WHEN STUDENTS_CUR%NOTFOUND; <span style="white-space:pre"> </span>DBMS_OUTPUT.PUT_LINE(V_SNAME||'<span style="white-space:pre"> </span>'||V_DOB); <span style="white-space:pre"> </span>END LOOP; <span style="white-space:pre"> </span>CLOSE STUDENTS_CUR; <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>END; /
</pre><p></p>2.更新数据<p>update语句的格式</p><p></p><pre name="code" class="sql">UPDATE TABLE_NAME SET ... WHERE CURRENT OF CURSOR_NAME;
DECLARE --声明变量和游标 V_TITLE TEACHERS.TITLE%TYPE; CURSOR TEACHERS_CUR IS SELECT TITLE FROM TEACHERS FOR UPDATE; BEGIN OPEN TEACHERS_CUR; LOOP FETCH TEACHERS_CUR INTO V_TITLE; EXIT WHEN TEACHERS_CUR%NOTFOUND; CASE WHEN V_TITLE='教授' THEN UPDATE TEACHERS SET WAGE = 1.1 * WAGE WHERE CURRENT OF TEACHERS_CUR; WHEN V_TITLE='高工' THEN UPDATE TEACHERS SET WAGE = 1.05 * WAGE WHERE CURRENT OF TEACHERS_CUR; ELSE UPDATE TEACHERS SET WAGE = WAGE+100 WHERE CURRENT OF TEACHERS_CUR; END CASE; END LOOP; CLOSE TEACHERS_CUR; END; /
3.删除数据
delete语句的格式
DELETE FROM TABLE_NAME WHERE CURRENT OF CURSOR_NAME;
DECLARE --声明变量和游标 V_SPECIALTY STUDENTS.SPECIALTY%TYPE; V_SNAME STUDENTS.NAME%TYPE; CURSOR STUDENTS_CUR IS SELECT NAME,SPECIALTY FROM STUDENTS FOR UPDATE; BEGIN OPEN STDUENTS_CUR; FETCH STUDENTS_CUR INTO V_SNAME,V_SPECIALTY; WHILE STUDENTS_CUR%FOUND LOOP IF V_SPECIALTY = 'CS' THEN DELETE FROM STUDENTS WHERE CURRENT OF STUDENTS_CUR; END IF; FETCH STDUENTS_CUR INTO V_SNAME,V_SPECIALTY; END LOOP; CLOSE STUDENTS_CUR; END; /
以上内容参考其他书籍的例子所写
相关文章推荐
- Get Resultset from Oracle Stored procedure
- IT忍者神龟之mysql与oracle的对比
- Oracle数据库语句大全
- Oracle时间比较
- oracle密码文件
- Oracle 数据库转码 US7ASCII ZHS16GBK
- oracle group by cast(timestamp field) issue
- Oracle SQLPlus 在连接时通常有四种方式
- Oracle:使用过程中的问题集锦
- Oracle:使用过程中的问题集锦
- oracle用cmd命令连接数据库
- Toad for Oracle 12.1下载地址
- Oracle 11gR2 + ASM + spfile (eng)
- 匿名存储过程块学习
- ORACLE中用rownum分页并排序的SQL语句
- oracle 删除重复记录
- oracle模糊查询语句使用示例
- Oracle中如何把表和索引放在不同的表空间里
- Windows 下DataGuard 搭建
- Oracle学习笔记(六)——Oracle表的基本查询