oracle12C--处理游标操作(62)
来源:互联网 发布:医学论文数据库 编辑:程序博客网 时间:2024/05/29 09:12
- 说明
- 定义:动态SQL除了处理单行查询操作外,还可以利用游标完成多行数据的操作;在游标定义时也同样可以使用动态绑定变量的方式,此时就需要在打开游标变量时增加USING子句操作;
- 语法:在打开游标变量中使用USING
OPEN 游标变量名称 FOR动态SQL语句 [USING绑定变量,绑定变量,....]
- 语法2:利用FETCH一次性保存多条数据到集合类型中
FETCH 动态游标BULK COLLECT INTO集合变量 ....;
- 举个栗子
- 示例1:在游标中使用动态SQL
DECLARE
cur_emp SYS_REFCURSOR ; --定义游标变量
v_emprow emp%ROWTYPE ; --定义emp行类型
v_deptno emp.deptno%TYPE := 10 ; --定义要查询雇员的部门编号
BEGIN
OPEN cur_emp FOR 'SELECT * FROM emp WHERE deptno=:dno '
USING v_deptno ;
LOOP
FETCH cur_emp INTO v_emprow ; --取得游标数据
EXIT WHEN cur_emp%NOTFOUND ; --如果没有数据则退出
DBMS_OUTPUT.put_line('雇员姓名:' || v_emprow.ename || ',雇员职位:' || v_emprow.job) ;
END LOOP ;
CLOSE cur_emp ;
END ;
/
本程序定义了一个弱类型的游标变量,而在程序主体部分使用OPEN....FOR操作要使用的动态SQL,由于此时绑定了一个变量,所以需要使用USING配置此变量内容
- 示例2:利用FETCH保存查询结果
DECLARE
cur_emp SYS_REFCURSOR ; --定义游标变量
TYPE emp_index IS TABLE OF emp%ROWTYPE INDEX BY PLS_INTEGER ; --定义索引表
v_emprow emp_index ; --定义emp行类型
v_deptno emp.deptno%TYPE := 10 ; --定义要查询雇员的部门编号
BEGIN
OPEN cur_emp FOR 'SELECT * FROM emp WHERE deptno=:dno' USING v_deptno ;
FETCH cur_emp BULK COLLECT INTO v_emprow ;
CLOSE cur_emp ;
FOR x IN 1 .. v_emprow.COUNT LOOP
DBMS_OUTPUT.put_line('雇员编号:' || v_emprow(x).empno || ',姓名:' || v_emprow(x).ename || ',职位:' || v_emprow(x).job) ;
END LOOP ;
END ;
/
本程序是将游标取得数据,通过FETCH BULK COLLECT INTO语句一次性地保存在了emp_index类型的变量中,而后采用FOR循环输出游标中的数据
- oracle12C--处理游标操作(62)
- Oracle12C--游标(三十五)
- Oracle12C--游标变量(三十八)
- Oracle12C--显式游标(三十六)
- Oracle12C--修改游标数据(三十七)
- Oracle12C--批量操作(三十四)
- 处理复合变量的游标操作
- Oracle12C--异常处理(二十九)
- oracle12c数据库的简单操作
- 游标操作
- 游标操作
- 游标操作
- 游标操作
- 游标操作
- SQL游标内游标处理
- Oracle12c新特性之基本操作
- Oracle12C--约束的其他操作(十)
- Oracle12C--操作类中的其他结构(65)
- QT
- c++ primer 第11章
- oracle12C--批量绑定(63)
- 内部排序
- 用活动和监视器来优化数据库
- oracle12C--处理游标操作(62)
- Java面向对象习题练习
- WPF 几个知识点
- leetcode147. Insertion Sort List
- 漂亮的登录界面
- k-Nearest Neighbors(k近邻)
- 使用cifar100,转化lmdb及制作均值文件
- PS第一课,认识Photoshop
- 设计模式之单例模式