oracle cusor游标,ORACLE CURSOR 游标详解

DECLARE

sqlStr       VARCHAR2(2000); --拼写sql

flag         int; --判断是否存在

col_name     VARCHAR2(100); --字段名字

tab_name     VARCHAR2(100); --表名

col_type     VARCHAR2(100); --表名

operator_str VARCHAR2(100) := '=';

FindUser     VARCHAR2(50) :='ERSAFETY'; --要查找的用户

FindValues   VARCHAR2(50) :=' USID20111128000292 '; --**要查找的值

Findtype1    VARCHAR2(50) := 'VARCHAR2'; --要查找的值类型 数字类型特殊处理

Findtype2    VARCHAR2(50) := 'CHAR'; --要查找的值类型

Findtype3    VARCHAR2(50) := 'VARCHAR'; --要查找的值类型

isLike       boolean := false; --是否模糊查找

cursor cur is --定义游标

select *

from all_tab_columns a

-- where a.OWNER = FindUser

where  a.Data_type in (Findtype1, Findtype2, Findtype3)

-- and a.Table_Name like 'BD_%'  ;--要查找的表的过滤

order by Table_Name, Data_type;

begin

if isLike then

operator_str := ' like ';

FindValues   := '''%' || FindValues || '%''';

else

operator_str := ' = ';

FindValues   := '''' || FindValues || '''';

end if;

for i in cur loop

tab_name := i.table_name;

col_name := i.column_name;

if col_name = 'USID' &instr(col_name ,'$')=0 then

col_type := i.Data_type;

sqlStr   := ' select count(*) from '||i.owner||'."'|| tab_name || '" where '||

col_name || operator_str || FindValues;

dbms_output.put_line(sqlStr || ' -----' || flag);

execute immediate sqlStr

into flag;

if flag > 0 then

dbms_output.put_line(' select ' || col_name || ' from ' || tab_name ||

' where ' || col_name || operator_str ||

FindValues || '  ---' || col_type || '---' || flag);

end if;

end if;

end loop;

end;

当然,游标也是可以省略的,如下所示:

begin

for xx in (select t.OWNER, t.TABLE_NAME, t.COLUMN_NAME

from dba_tab_columns t

where t.OWNER = 'SCOTT') loop

--这样直接遍历sql的查询结果也是可以的。     begin       v_Sql := 'select count(1) from ' || xx.owner || '.' || xx.table_name ||                      --使用方法同上。     end;   end loop; end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值