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

  1. declare
  2. type type_cursor is ref cursor [return 记录类型]; --使用 ref cursor 才能把游标分配给不同的SQL,return不能用在动态SQL
  3. v_cursor type_cursor ;
  4. begin
  5. OPEN v_cursor FOR select first_name, last_name from student;
  6.  
  7. OPEN v_cursor FOR ' select first_name,last_name from student where zip = :1 '
  8. USING 绑定变量1;

  

open 静态SQL cursor cursor c1 is <静态SQL文本>
open c1; fetch ... into ... ; close c1;
open for     静态SQL     ref cursor type t_1 is ref cursor;
c2  t_1 ;
open c2 for <静态SQL语句>;
open for using 动态SQL type t_1 is ref cursor;
c2  t_1 ;
open c2 for <动态SQL语句> using ... ;

例子1:

  1. declare
  2. type student_cur_type is ref CURSOR RETURN test_stu%ROWTYPE; --声明ref cursor类型, return类型固定
  3. v_first_name test_stu.first_name%TYPE;
  4. v_last_name test_stu.last_name%TYPE;
  5. cur_stud student_cur_type;
  6. begin
  7. open cur_stud for select first_name,last_name from student ; --带returnref cursor只能用在静态sql
  8. loop
  9. fetch cur_stud into v_first_name, v_last_name;
  10. exit when cur_stud%NOTFOUND;
  11. dbms_output.put_line(v_first_name || ' ' || v_last_name);
  12. end loop;
  13. close cur_stud;
  14. end;

  

例子2:

  1. declare
  2. v_zip varchar2(5) := '&sv_zip';
  3. v_first_name varchar2(25);
  4. v_last_name varchar2(25);
  5.  
  6. type student_cur_type is ref cursor; --声明ref cursor类型
  7. student_cur student_cur_type; --student_cur是游标变量 / student_cur_type 是引用游标类型
  8. begin
  9. --2打开游标变量,让它指向一个动态select查询的结果集 ; 就是使用open for语句代替一般的open语句代开游标
  10. open student_cur for 'select first_name,last_name ' from student where zip = :1'
  11. using v_zip;
  12. loop
  13. fetch student_cur into v_first_name, v_last_name;
  14. exit when student_cur%NOTFOUND;
  15. dbms_output.put_line(v_first_name || ' ' || v_last_name);
  16. end loop;
  17. close student_cur;
  18. end;

  

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

oracle OPEN FOR [USING] 语句的更多相关文章

  1. oracle去掉重复记录语句

    oracle去掉重复记录语句   比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来 select p1.*   from persons  p1 ...

  2. oracle过程中动态语句实现

    oracle过程中动态语句实现 一般的PL/SQL程序设计中,在DML和事务控制的语句中可以直接使用SQL,但是DDL语句及系统控制语句却不能在PL/SQL中直接使用,要想实现在PL/SQL中使用DD ...

  3. 说说oracle分页的sql语句

    说说oracle分页的sql语句,分排序和不排序两种. 当结果集不需要进行排序时,每页显示条数为:rowPerPage,当前页数为:currentPage. 1. 相对来说,这种查询速度会快一些,因为 ...

  4. oracle 多条执行语句同时执行

    oracle 多条执行语句同时执行:begin 语名一;语句二; end; 注意 如果写在C#里千万不要用@的方法然后语句里有回车 例: string strSql = "begin upd ...

  5. Oracle中分页查询语句

    Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用.O ...

  6. Oracle的分页查询语句优化

    Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. (一)   分页查询格式: SELECT * FROM  ( SELECT A.*, ROWNUM RN  FROM (SELECT ...

  7. ORACLE-Kill 杀死正在执行的Oracle存储过程和死锁语句

    ORACLE-Kill 杀死正在执行的Oracle存储过程和死锁语句 存储过程 1.找到正在执行的存储过程的 sid ,serial# select   b.sid,b.SERIAL#,a.OBJEC ...

  8. Oracle数据库 基础SQL语句练习

    一.说明 第一次使用Oracle,想做一些练习,熟悉一些oracle. 表:使用的是scott用户,默认的表 具体表讲解,可以参考该文档:https://www.cnblogs.com/xjcheng ...

  9. imp导入时 出现IMP-00017:由于 ORACLE 错误 6550, 以下语句失败: 解决方法

    cmd命令下--执行imp命令时,出现IMP-00017:由于 ORACLE 错误 6550, 以下语句失败: 解决办法:在imp命令里加入 statistics=none (不导入数据库统计信息) ...

  10. Oracle执行SQL查询语句的步骤

    Oracle执行SQL查询语句的步骤 如果用户在SQL*Plus下输入了如下查询语句:SELECT * FROM dept: 查询语句的处理主要包括三个过程:编译(parse).执行(execute) ...

随机推荐

  1. KVM之virsh管理虚拟机硬盘配置

    新建raw格式虚拟盘 [root@ubuntu ~]# qemu-img create -f raw /data/raw/disk02.raw 5G Formatting '/data/raw/dis ...

  2. 抓包分析工具web版——capanalysis

    1.下载安装 官网上,安装在Ubuntu上 2.使用教程 https://blog.51cto.com/chenguang/1325742

  3. vim文件时自动添加作者、时间、版权等信息

    在工作中,搞运维的工程师往往会编写或完善自动化脚本时,都会手动添加表头注释,例如版权声明.作用.时间等信息提示,如果每次都手动编辑添加会大大消耗时间,所有我们可以利用快捷方法来节省时间,一种是手动在家 ...

  4. Window10下Python3.7 安装与卸载

    1.进入官网https://www.python.org/,点击Downloads下的Windows按钮,进入下载页面. 2.如下图所示,点击下载. 3.安装Python3.7.4 4.打开cmd,输 ...

  5. 【Jenkins】修改Ubuntu下的jenkins端口号

    jenkins安装目录:/var/lib/jenkins jenkins日志目录:/var/log/jenkins/jenkins.logjenkins默认配置:/etc/default/jenkin ...

  6. C++---初识《通过g++ / makefile 编译和调用动态库so文件》(ubuntu)

    C++---初识<通过g++ / makefile  编译和调用动态库so文件>(ubuntu) ------------------------目录------------------- ...

  7. LINQ图解教程

    LINQ 什么是LINQLINQ提供程序 匿名类型 方法语法和查询语法查询变量查询表达式的结构 from子句join子句什么是联结查询主体中的from…let…where片段 from子句let子句w ...

  8. P3183 [HAOI2016]食物链[拓扑/记忆化搜索]

    题目来源:洛谷 题目描述 如图所示为某生态系统的食物网示意图,据图回答第1小题现在给你n个物种和m条能量流动关系,求其中的食物链条数.物种的名称为从1到n编号M条能量流动关系形如a1 b1a2 b2a ...

  9. python自动华 (十七)

    Python自动化 [第十七篇]:jQuery介绍 jQuery jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多),对jav ...

  10. sql server 游标的知识

    一:认识游标   游标是SQL Server的一种数据访问机制,它允许用户访问单独的数据行.用户可以对每一行进行单独的处理,从而降低系统开销和潜在的阻隔情况,用户也可以使用这些数据生成的SQL代码并立 ...