Oracle游标cursor2显示的游标等
--在一中我们介绍了实现过程
select *from stud;
declare
cursor mycur is select id,name from stud;--1声明
v_id integer;
v_name varchar(30);
begin
open mycur;--2打开游标
loop--3遍历
fetch mycur into v_id,v_name;
exit when mycur%notfound;--找不到数据退出
--显示数据
DBMS_OUTPUT.PUT_LINE('编号'||v_id||'姓名'||v_name);
end loop;
if mycur%isopen then --5确定关闭
DBMS_OUTPUT.PUT_LINE('正常关闭');
close mycur;
else
SYS.DBMS_OUTPUT.PUT_LINE('已经关闭');
end if;
exception --4关闭
when others then
SYS.DBMS_OUTPUT.PUT_LINE('异常关闭');
close mycur;
end; --记录集类型 declare
--声明游标
cursor cur is select * from stud;
--声明记录集类型
res_stud stud%rowType;
begin
--打开游标
open cur;
--遍历
loop
--直接将每一次获取的值,放到记录集中去
fetch cur into res_stud;
exit when cur%notfound;
--输出
dbms_output.put_line('id '||res_stud.id||' name is:'||res_stud.name);
end loop;
close cur;
end;
------------------------------
--直接使用 for in
--不用打开
DECLARE
CURSOR mycur1 is select * from stud;
begin
for vv in mycur1 loop
SYS.DBMS_OUTPUT.PUT_LINE('编号'||vv.id||''||'姓名'||vv.name);
end loop;
end;
--隐式 begin
for vv in (select * from stud) loop
SYS.DBMS_OUTPUT.PUT_LINE('编号'||vv.id||''||'姓名'||vv.name);
end loop;
end; ----接受参数的游标
/*
1,工具接受
...where id=&id;
2。在游标申明时给定参数
在plsql块中使用
3。在procedure过程中使用游标 */ --2
accept iid prompt '输入id值';
declare
cursor mycur2(p_id integer)is select * from stud where id>p_id;
v_stud stud%rowType;
begin
open mycur2(&iid);
loop
fetch mycur2 into v_stud;
exit when mycur2%notfound;
DBMS_OUTPUT.PUT_LINE(v_stud.id||''||v_stud.name);
end loop;
close mycur2;
end; --3过程中使用
--声明一个接收参数的游标
--一个要求,sql语句是动态的 create or replace procedure px1(px_id integer)
as
cursor cc(p_id integer) is select * from stud where id>p_id;
v_stud stud%rowType;
begin
--自己显式的打开,在这儿可以接收参数
open cc(px_id);
loop
fetch cc into v_stud;
exit when cc%notfound;
dbms_output.put_line(v_stud.id||v_stud.name);
end loop;
close cc;
end;
--调用
set serveroutput on;
begin
px1(4);
end;
-----------------------------------------------------------------------------
--删除用户创建的所有表-----------慎用仅作讲解
--声明一个过程
set serveroutput on;
create or replace procedure dropall
as
--声明一个cursor,查询用户的所有表
cursor cur is select table_name from user_tables;
--声明一个变量保存表名
v_tabname user_tables.table_name%type;
begin
open cur;
loop
fetch cur into v_tabname;
exit when cur%notfound;
dbms_output.put_line(v_tabname);
--组成sql--在sql块中,是不可以执行DDL
execute immediate 'drop table '||v_tabname||' purge';
end loop;
close cur;
end; create table studsss(id int);
drop table stud purge;
select * from tab;
purge recyclebin; select * from dba_users; begin
dropall();
end;
Oracle游标cursor2显示的游标等的更多相关文章
- 简单了解一下oracle中的显示游标和存储过程
游标 游标主要分两类动态和静态游标,静态游标是编译时知道明确的select语句的游标,静态游标分类两种,显示游标和静态游标,这里只说显示游标 显示游标 declare name emp.ename%t ...
- Oracle数据库之PL/SQL游标
1. 游标概念 字面意思是游动的光标,是指向上下文区域的句柄或指针. 在PL/SQL块中执行CRUD操作时,ORACLE会在内存中为其分配上下文区.用数据库语言来描述游标就是:映射在上下文区结果集中一 ...
- 【Oracle】PL/SQL 显式游标、隐式游标、动态游标
在PL/SQL块中执行SELECT.INSERT.DELETE和UPDATE语句时,Oracle会在内存中为其分配上下文区(Context Area),即缓冲区.游标是指向该区的一个指针,或是命名一个 ...
- Oracle 11g 新特性 -- 自适应游标共享(Adaptive Cursor Sharing: ACS) 说明(转载)
一.自适应游标共享(Adaptive Cursor Sharing) 说明 1.1 ACS概述绑定变量使Oracle DB 可以为多条SQL 语句共享单个游标,以减少分析SQL 语句所使用的共享内存量 ...
- oracle中表空间管理,游标
一.表空间 oracle使用表空间来管理数据库的对象(表,序列,过程,函数,游标等). oracle的逻辑结构(看不见的):oracle数据库 => 表空间 => 表 序列 过程等对象. ...
- oracle 视图的创建,游标,left join
视图的创建: create or replace view dmv_mat_contract_stock_in_bill as select csib.*, sib.STOCK_IO_, sib.CO ...
- Mybatis下配置调用Oracle自定义函数返回的游标结果集
在ibatis和Mybatis对存储过程和函数函数的调用的配置Xml是不一样的,以下是针对Mybatis 3.2的环境进行操作的. 第一步配置Mapper的xml内容 <mapper names ...
- Oracle与Mysql内嵌游标的使用示例
Oracle 游标用For循环比较简单,Mysql也是最近才开始用,感觉稍微麻烦一点,下边直接上代码: ------------------------------------------------ ...
- Oracle学习(七)游标
一.简介 定义 实质上是数据集,类似数组一样,把查询的数据集存储在内存当中. 使用时可以通过游标指向其中一条记录,也可以通过循环游标达到循环数据集的目的. 游标的种类 显式游标: 使用之前必须得先声明 ...
随机推荐
- JQuery结合Ajax实现双击Table表格,使Table变成可编辑,并保存到数据库中
本文属于原创,转载请标明出处! 近期在做项目时,要实现通过双击Table表格的TR,使Table行变成可编辑,来实现修改数据并保存到数据库中的功能,无需多说,直接贴代码吧.希望能得到各位同仁指正. f ...
- 【转】C++成员函数的存储方式
[转] http://c.biancheng.net/cpp/biancheng/view/187.html 用类去定义对象时,系统会为每一个对象分配存储空间.如果一个类包括了数据和函数,要分别为数据 ...
- 莫队算法学习笔记【BZOJ2038:小Z的袜子】【SPOJ3267:D-query】
很久以前傻乎乎地看来源奇怪的资料的时候被各种曼哈顿弄晕了. 然后现在学会的是分块方法.另新创一个分块方法. 让我们考虑这样一个区间询问问题…… 它有如下的性质: 0,n个数,Q个询问. 1,它没有修改 ...
- Java中int和String互相转换的多种方法
1 如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([ ...
- Jquery 判断IE
if( $.browser.msie && ( $.browser.version == '7.0' || $.browser.version == '8.0' ) ){ alert( ...
- laravel实现第三方登录(qq登录)
首先composer安装依赖: composer require socialiteproviders/qq 注册服务提供者(同时注释掉原有的Socialite提供者): 'providers' =& ...
- Microsoft.Practices.Unity 给不同的对象注入不同的Logger
场景:我们做项目的时候常常会引用第三方日志框架来帮助我们记录日志,日志组件的用途主要是审计.跟踪.和调试.就说我最常用的日志组件log4net吧,这个在.NET同行当中应该算是用得非常多的一个日志组件 ...
- Android中写入读取XML
获取XML文件的基本思路是,通过getResources().getXml()获的XML原始文件,得到XmlResourceParser对象,通过该对象来判断是文档的开头还是结尾,是某个标签的开始还是 ...
- JSP(二)
一.pageContext对象 1>代表当前JSP页面的运行环境, [作用域仅仅局限于当前JSP页面中,出了该JSP页面, 原PageContext域对象被销毁] 2>封装了对 ...
- KEIL简单实例
好久都没有用KEIL了,突然想动手,一时还真不知道从哪开始写,所以先弄个小实例,以便参考:#include <reg52.h> //加载包括一个52标准内核的头文件,里面主要是一些寄存器 ...