Oracle中如何使用游标?哪位高人能给我举一个简单的例子!多谢了!!
解决方案 »
- select dm , decode(dm,'01','一班','02','一班',……,'100','一班','101',二班', ……'200','二班
- 请教一个关于不定时job调用的问题。在线等!
- oracle 合并两张不同结构的表数据?
- ASP操作ORACLE数据库的BLOB字段
- OracleDataAdapter.Update(dataTable) 提示“ORA-00903: 表名无效”的错误,查询没有问题,dataTable里面的数据有修改。
- 问个关于分页查询的问题
- 两个表中有两个字段A,B意义相同,怎么用第一个表的B字段去更新第二个表的B字段?
- 为什么我的系统内存在"BIN$5HxhDh6fgnbgMHPKOKk7hQ==$0"这样的表名。(非常抱歉我没有可用分了。)
- 菜鸟问题
- pro *C 怎么调用存储
- ORA-14452: attempt to create, alter or drop an index on temporary table already
- 问高手个问题,开发移动那样的客户管理系统,用sql sever,还是oracle,为什么?
table1(id varchar2(10), name varchar2(10))id name
1 aa
1 bb
1 cc
2 xx
3 yy
3 zz--示例程序如下
declare
i integer;
v_tmp varchar2(20);
cusor kk is --定义游标变量
select id,name from table1;
begin
for v in kk loop
v_tmp:=to_char(v.id)||'==='||v.name;
dbms_output.put_line(v_tmp);
end loop;
end;
cd varchar2(7);
nm varchar2(40);
cursor c_s is
select location_cd,location_nm from location;
begin
open c_s;
loop
fetch c_s into cd,nm;
exit when c_s%NOTFOUND;
dbms_output.put_line(cd||'----'||nm);
end loop;
close c_s;
end;
当PL/SQL游标查询返回多行数据时,这些记录组被称为活动集。Oracle将这种活动集存储在您创建的显示定义的已命名的游标中。Oracle游标是一种用于轻松的处理多行数据的机制,没有游标,Oracle开发人员必须单独地、显式地取回并管理游标查询选择的每一条记录。
游标的另一项功能事,它包含一个跟踪当前访问的记录的指针,这使您的程序能够一次处理多条记录。
什么情况
当一个sql无法提取记录或者记录需要单条处理的时候,就用游标
剩下的就是编成的工作了。
参考以下代码,可能会有些帮助。
declare
num varchar2(10);
cur sys_refcursor;
begin
for rec in (select table_name,column_name
from user_tab_columns
where column_name='LOCATION_CD')
loop
open cur for 'select count(*) from '|| rec.table_name ||' where '|| rec.column_name||'=''D059010''';
--dbms_output.put_line('select count(*) from '|| rec.table_name ||' where '|| rec.column_name||'=''D059010''');
--dbms_output.put_line(to_char(cur%rowcount));
fetch cur into num;
dbms_output.put_line(rec.table_name||' '||num);
insert into tmp_test values(rec.table_name,num);
close cur;
end loop;
end;