oracle中游标,数组的使用

1) select * from cnbs_security_role_menu for update;

2)oracle 中游标的使用: http://www.cnblogs.com/sc-xx/archive/2011/12/03/2275084.html

declare

--类型定义

cursor c_job is

select combine_no,plan_code,flag from rate_combine  where plan_code=‘C01‘ and rownum <10;

--定义一个游标变量

c_row c_job%rowtype;

begin

open c_job;

loop

--提取一行数据到c_row

fetch c_job into c_row;

--判读是否提取到值,没取到值就退出

--取到值c_job%notfound 是false

--取不到值c_job%notfound 是true

exit when c_job%notfound;

dbms_output.put_line(c_row.combine_no||‘-‘||c_row.plan_code||‘-‘||c_row.flag);

end loop;

--关闭游标

close c_job;

end;

3)如果使用固定长度的数组,而且不需要在外部定义可以如下定义

declare

type ar is varray(15) of varchar2(12); --声明数组类型

rt ar:=ar(‘dd‘,‘ff‘,‘ss‘); --声明数组类型变量rt,并赋初值

i integer:=1;

begin

for i in 1..rt.count loop

-- rt(i):=i;

dbms_output.put_line(‘count=‘||rt(i));

end loop;

end;

4 )如果我们要使用的数组长度不能预计,我们可以按如下方法作:

declare

TYPE numtab IS TABLE OF varchar2(50) INDEX BY BINARY_INTEGER; //定义一个数组类型;

arr numtab; //使用这个类型声明一个变量;

i integer:=1;

begin

for i in 1..100 loop

arr(i):=i;//为变量赋值

dbms_output.put_line(‘arr[‘||i||‘]=‘||arr(i));

end loop;

dbms_output.put_line(‘count=‘||arr.count);

end ;

5)--- 使用带参数的游标;

declare

CURSOR stock_cur(symbol_in VARCHAR2) IS

SELECT * FROM rate_combine_nr nr WHERE nr.combine_no=symbol_in;

stock_info stock_cur%ROWTYPE;

begin

OPEN stock_cur(‘G600000001‘); --打开游标;

loop

FETCH stock_cur INTO stock_info; --从游标中取值

exit when stock_cur%notfound;

dbms_output.put_line(stock_info.combine_no||‘-‘||stock_info.department_code);

end loop;

close stock_cur; --关闭游标

end;

时间: 2024-08-14 18:50:53

oracle中游标,数组的使用的相关文章

oracle中游标与动态绑定变量

一.      游标: 用数据库语言来描述:游标是映射在结果集中一行数据上的位置实体,有了游标用户就可以访问结果集中的任意一行数据了,将游标放置到某行后,即可对该行数据进行操作,例如提取当前行的数据等等. 在Oracle9i之前,使用FETCH语句每次只能提取一行数据:从Oracle9i开始,通过使用FETCH…BULK COLLECT INTO语句,每次可以提取多行数据.语法如下: (1) FETCH cursor_name INTO variable1,variable2,…: 此方法必须要

向Oracle中传入数组,批量执行SQL语句

1.首先用PL/SQL创建package 1 create or replace package excuteBatchOperate 2 as 3 type sqlStr_Array is table of varchar2(1000) index by binary_integer; 4 procedure excuteBulkData(sqlStr in sqlStr_Array); 5 end excuteBatchOperate; 2.在packagebody内创建存储过程 1 cre

Oracle 中的游标(用Javase中Iterator 类比之)

当使用 pl/sql 查询 Oracle 数据库时,有时我们想输出多条记录的数据.:select * from scott.emp; 这时,我们一定会想利用循环来输出.但是,在pl/sql 中是没有数组类型的,那么用什么来暂时保存查询出来的结果集那? 这时.就要使用 cursor(游标). 1.定义游标: 2.打开游标: 3.查询数据: 4.关闭游标: 5.提交事务: 6.错误处理: Oracle 中的游标(用Javase中Iterator 类比之)

java实现调用ORACLE中的游标和包

今天把oracle中的包和游标学习了下,不废话,网上的的有些代码是错误的,抄来抄去,就自己实践了下,做个记录.直接上图,上代码 通过plsql创建自己的的包,包分为包头和包体. 1.包头如下: 1 CREATE OR REPLACE PACKAGE JAVALINKTEST 2 IS 3 TYPE CURSOR_TYPE IS REF CURSOR; --定义游标 4 PROCEDURE TEST_CURSOR(INPUT STRING, CURSOR_BACK OUT CURSOR_TYPE)

oracle中的游标(转)

Oracle中的游标有两种:显式游标.隐式游标.显示游标是用cursor...is命令定义的游标,它可以对查询语句(select)返回的多条记录进行处理,而隐式游标是在执行插入 (insert).删除(delete).修改(update)和返回单条记录的查询(select)语句时由PL /SQL 自动定义的. 显式游标 当声明了显式游标后,可以通过以下三条命令控制显式游标的操作:打开游标.推进游标.关闭游标. 声明显式游标 Ø  无参游标 cursor c_auths is select * f

Oracle中的游标(光标)--来自Oracle赵强老师

 表.select语句.游标:返回结果都能是一个集合. 注意:游标的结果是一个集合. --查询并打印员工的姓名和薪水 set serveroutput on /* 光标: 1. 光标的属性: %isopen %rowcount(返回的行数) %notfound %found 2. 默认情况下,一次性打开300个光标 SQL> show parameter cursor NAME TYPE VALUE ------------------------------------ ---------

Oracle中使用游标获取指定数据表的所有字段名对应的字符串

操作步骤:打开PLSQL Developer后,直接执行下面的语句就可以出来 --Oracle中使用游标获取指定数据表的所有字段名对应的字符串 declare mytablename VARCHAR(255):='STAFFDOC'; --定义要查询的数据表名变量,STAFFDOC为我测试用的数据表名,请修改成您的数据库中的对应数据表名字mystring NVARCHAR2(4000):=''; --定义要输出的字符串变量 cursor mycursor is --定义游标          s

Oracle使用游标删除所有用户数据表中的所有记录脚本

应用场景:因为数据库中的数据涉及机密信息,希望一次性能删除掉所有数据,只保留数据表结构,供新项目开发程序用 测试结果:经查询已删除所有数据 存在问题:数据表如果存在外键的话下面脚本可能执行不成功,请自行删除或者过滤掉该表,见下图 操作办法:直接将下面的脚本内容复制到PQSQL中执行即可 --Oracle使用游标删除所有用户数据表中的所有记录脚本 declare mystring NVARCHAR2(1000):=''; --定义要输出的字符串变量 cursor mycursor is --定义游

oracle数据库中游标和序列的区别

两者是完全不同的东西游标是基于查询结果集的比方说你的一个select语句查询出了若干条记录这样一个结果集,如果你想对结果集中的每一行都进行一个判断或则其他操作,那么用sql语句的update或者就不能满足针对每一行的特定操作,这个时候游标就发挥作用了:你可以把这个结果集定义成一个游标,通过游标的操作形式,你可以遍历结果集中的每一行记录并可以对它进行操作,也就是你可以通过游标对一个select查询出的结果执行for循环来遍历操作数据.而序列则是oracle中的一种对象,就像表.视图一样,你可以像建