我是靠谱客的博主 灵巧学姐,最近开发中收集的这篇文章主要介绍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;



最后

以上就是灵巧学姐为你收集整理的ORACLE CURSOR 游标详解的全部内容,希望文章能够帮你解决ORACLE CURSOR 游标详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部