目的:

和ref cursor配合使用, 可以将游标变量分配给不同的SQL (而不是在declare中把游标给定死), 增加处理游标的灵活性

语法:

declare

type type_cursor is ref cursor [return 记录类型]; --使用 ref cursor 才能把游标分配给不同的SQL,return不能用在动态SQL中

v_cursor type_cursor ;

begin

OPEN v_cursor FOR select first_name, last_name from student;

OPEN v_cursor FOR ' select first_name,last_name from student where zip = :1 '

USING 绑定变量1;

open

静态SQL

cursor

cursor c1 is

open c1; fetch ... into ... ; close c1;

open for

静态SQL

ref cursor

type t_1 is ref cursor;

c2 t_1 ;

openc2 for;

open for using

动态SQL

type t_1 is ref cursor;

c2 t_1 ;

openc2 for using ... ;

例子1:

declare

type student_cur_type is ref CURSOR RETURN test_stu%ROWTYPE; --声明ref cursor类型, return类型固定

v_first_name test_stu.first_name%TYPE;

v_last_name test_stu.last_name%TYPE;

cur_stud student_cur_type;

begin

open cur_stud for select first_name,last_name from student ; --带return的ref cursor只能用在静态sql中

loop

fetch cur_stud into v_first_name, v_last_name;

exit when cur_stud%NOTFOUND;

dbms_output.put_line(v_first_name || ' ' || v_last_name);

end loop;

close cur_stud;

end;

例子2:

declare

v_zip varchar2(5) := '&sv_zip';

v_first_name varchar2(25);

v_last_name varchar2(25);

type student_cur_type is ref cursor; --声明ref cursor类型

student_cur student_cur_type; --student_cur是游标变量 / student_cur_type 是引用游标类型

begin

--2打开游标变量,让它指向一个动态select查询的结果集 ; 就是使用open for语句代替一般的open语句代开游标

open student_cur for 'select first_name,last_name ' from student where zip = :1'

using v_zip;

loop

fetch student_cur into v_first_name, v_last_name;

exit when student_cur%NOTFOUND;

dbms_output.put_line(v_first_name || ' ' || v_last_name);

end loop;

close student_cur;

end;

转载自:https://blog.csdn.net/crzzyracing/article/details/75336196

oracle open for using的用法,oracle OPEN FOR [USING] 语句相关推荐

  1. oracle中的with的用法,oracle with 话语的用法

    oracle with 语句的用法 在oracle中,select 查询语句,可以使用with,就是一个子查询,oracle 会把子查询的结果放到临时表中,可以反复使用 例子:注意,这是sql语句,不 ...

  2. oracle中的with的用法,oracle中with子句的用法(转)

    语法: WITH query_name AS (subquery) [, query_name AS (subquery) ]... 使用在主select关键字前,oracle将其当做一个内联视图或者 ...

  3. oracle的sql的substr用法,oracle中substr函数的用法(sqlserver right)

    oracle: 语法: substr(string,a,b): a:从第几位开始,第一位a=1,倒数第三位(即sqlserver中的right)a=-3 b:取几个字符 substr('This is ...

  4. oracle中的to_number,Oracle中to_number()函数的用法

    to_number()函数是oracle中常用的类型转换函数之一,是将一些处理过的按一定格式编排过的字符串变回数值型的格式. 1.to_number()函数可以将char或varchar2类型的str ...

  5. oracle中rollback用法,Oracle中SAVEPOINT和ROLLBACK用法

    savepoint是事务内部允许部分rollback的标志符.因为事务中对记录做了修改,我们可以在事务中创建savepoint来标识不同的点.如果遇到错误,就可以rollback到不同的点或直接回来事 ...

  6. oracle求和分组排序,oracle中分组排序函数用法 - 转

    项目开发中,我们有时会碰到需要分组排序来解决问题的情况,如:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示 ...

  7. partition oracle用法,Oracle partition by 使用说明

    --用法详解 0.select * from wmg_test;     ---测试数据 1.select v1,v2,sum(v2) over(order by v2) as sum     --按 ...

  8. oracle中的merge into用法解析

    oracle中的merge into用法解析 merge into的形式 MERGE INTO [target-table] A USING [source-table sql] B ON([cond ...

  9. oracle中over()分析函数的用法

    摘自: http://www.poluoluo.com/jzxy/201004/81921.html 百度文库也记载了oracle中over()分析函数的用法 在泡坛子的时候中无意中发现了这个函数,才 ...

最新文章

  1. [转]Oracle 服务器名配置
  2. 数据结构实验之栈七:出栈序列判定
  3. Java定时任务调度工具详解之Timer篇
  4. 精化集ASP.NET AJAX与ASP.NET MVC分类第二轮筛选结果
  5. php函数收集参数,DELL 14G服务器 对应 金牌银牌铜牌铂金CPU 参数简单汇总
  6. gtest 学习之五 测试用例中定义类
  7. Vue实例和生命周期 1
  8. Catboost:超越Lightgbm和XGBoost的又一个boost算法神器
  9. ios 性能优化之图形性能测试
  10. Gson解析数组和list容器
  11. listary的使用教程
  12. 勒索病毒解密工具的汇总
  13. android 不透明度
  14. Excel辅助“校验”
  15. JavaScript复制内容到剪贴板 1
  16. ESlint语法检测工具
  17. JSP+Servlet实现BMI计算器
  18. 出了山寨机,国产的就没法活了?
  19. Python实现FFT及IFFT
  20. 计算机存放程序和数据的设备是什么,计算机中用来存放程序和数据的部件是什么...

热门文章

  1. SpringMVC 实例应用 -- 不同方式控制器实现与参数传递
  2. C++类与对象概念详解
  3. Qt调用动态链接库ControlCAN.dll实例
  4. Qt-调用dll动态链接库
  5. C++模拟键盘操作窗口入门
  6. python数据类型特点_Python 基础数据类型
  7. 程序员基本功08异常捕捉的陷阱
  8. c语言中strcmp作用,C语言中strcmp的实现原型
  9. 计算机毕业设计制作模仿网站的期末作业通过神器——各种扒站方法(网站,软件)
  10. f12控制台如何查看consul_基于 Consul 的 Go Micro 客户端服务发现是如何实现的