oracle OPEN FOR [USING] 语句
目的:
和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 <静态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:
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去掉重复记录语句
oracle去掉重复记录语句 比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来 select p1.* from persons p1 ...
- oracle过程中动态语句实现
oracle过程中动态语句实现 一般的PL/SQL程序设计中,在DML和事务控制的语句中可以直接使用SQL,但是DDL语句及系统控制语句却不能在PL/SQL中直接使用,要想实现在PL/SQL中使用DD ...
- 说说oracle分页的sql语句
说说oracle分页的sql语句,分排序和不排序两种. 当结果集不需要进行排序时,每页显示条数为:rowPerPage,当前页数为:currentPage. 1. 相对来说,这种查询速度会快一些,因为 ...
- oracle 多条执行语句同时执行
oracle 多条执行语句同时执行:begin 语名一;语句二; end; 注意 如果写在C#里千万不要用@的方法然后语句里有回车 例: string strSql = "begin upd ...
- Oracle中分页查询语句
Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用.O ...
- Oracle的分页查询语句优化
Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. (一) 分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT ...
- ORACLE-Kill 杀死正在执行的Oracle存储过程和死锁语句
ORACLE-Kill 杀死正在执行的Oracle存储过程和死锁语句 存储过程 1.找到正在执行的存储过程的 sid ,serial# select b.sid,b.SERIAL#,a.OBJEC ...
- Oracle数据库 基础SQL语句练习
一.说明 第一次使用Oracle,想做一些练习,熟悉一些oracle. 表:使用的是scott用户,默认的表 具体表讲解,可以参考该文档:https://www.cnblogs.com/xjcheng ...
- imp导入时 出现IMP-00017:由于 ORACLE 错误 6550, 以下语句失败: 解决方法
cmd命令下--执行imp命令时,出现IMP-00017:由于 ORACLE 错误 6550, 以下语句失败: 解决办法:在imp命令里加入 statistics=none (不导入数据库统计信息) ...
- Oracle执行SQL查询语句的步骤
Oracle执行SQL查询语句的步骤 如果用户在SQL*Plus下输入了如下查询语句:SELECT * FROM dept: 查询语句的处理主要包括三个过程:编译(parse).执行(execute) ...
随机推荐
- MMU简介
MMU(Memory Management Unit)内存管理单元 负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查.内存访问权限的检查可以保护每个进程所用的内存不会被其他进程所破坏 地 ...
- 用一个N点复序列的FFT同时计算两个N点实序列离散傅里叶变换
一.功能 用一个\(N\)点复序列快速傅立叶变换算法来同时计算两个\(N\)点实序列的离散傅立叶变换. 二.方法简介 假设\(x(n)\)与\(y(n)\)都是长度为\(N\)的实序列,为计算其离散傅 ...
- 《浏览器工作原理与实践》<08>调用栈:为什么JavaScript代码会出现栈溢出?
在上篇文章中,我们讲到了,当一段代码被执行时,JavaScript 引擎先会对其进行编译,并创建执行上下文.但是并没有明确说明到底什么样的代码才算符合规范. 那么接下来我们就来明确下,哪些情况下代码才 ...
- ORACLE归档日志满了之后,如何删除归档日志
当ORACLE归档日志满后如何正确删除归档日志 版权声明:本文为博主原创文章,未经博主允许不得转载. 当ORACLE 归档日志满了后,将无法正常登入ORACLE,需要删除一部分归档日志才能正常登入OR ...
- Kinect for Windows SDK开发入门(三):基础知识 下
原文来自:http://www.cnblogs.com/yangecnu/archive/2012/04/02/KinectSDK_Application_Fundamentals_Part2.htm ...
- 图卷积神经网络(GCN)入门
图卷积网络Graph Convolutional Nueral Network,简称GCN,最近两年大热,取得不少进展.不得不专门为GCN开一个新篇章,表示其重要程度.本文结合大量参考文献,从理论到实 ...
- Http协议与TCP协议
背景 在日常工作中,经常会遇到某某框架是基于Http协议或者TCP协议,今天,就针对于该协议,整理下 从本质上来说,Http协议与TCP协议是应用在不同网络层,Http协议处于应用层,TCP处于传输层 ...
- laravel本地开发环境的安装及配置 - Windows:安装 Laravel Homestead 虚拟机
一.安装 VirtualBox-5.2.22-126460-Win.exe 和 vagrant_2.2.2_x86_64.msi(可视化安装包安装); 安装在D盘 二.导入 Homestead Vag ...
- 教程|Anaconda在Windows上安装及使用
Anaconda是一个python环境管理软件.可以建立环境,并向环境装安装自己需要的包. 其优势是可以不用自己一个一个安装包,极大地减少了因为配置环境而产生的时间成本:同时多个环境相互独立,为不同项 ...
- 通过.frm表结构和.ibd文件恢复数据
整个恢复过程其实可以总结为下面几步: (1):恢复表结构 (2):复制出来创建表的sql语句 (3):恢复表数据(在恢复表数据的时候,首先需要解除当前创建的表与默认生成的.ibd文件间的关系,接着将要 ...