文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

oracle批量添加指定表前缀的索引SQL语句

2017-07-16 00:42

关注

oracle批量添加指定表前缀的索引SQL语句

需要输入用户名,表空间,索引个数,表名前缀,过滤的表名后缀
declare
  --用户名
  userName varchar2(50) :="snsrm";
  --表空间
  tablespaceName varchar2(50) :="APPS_TS_TX_IDX";
  --索引个数
  rowN number :=3;
  --过滤表名后缀,该表不添加索引
  tableLastName varchar2(10) :=upper("_temp");
  tableLastName1 varchar2(10) :=upper("_te");
  --表名前缀
  cursor vdata is select t.table_name from user_tables t where t.TABLE_NAME like upper("SRM_POS%") 
  and t.TABLE_NAME not like "%"||tableLastName 
  and t.TABLE_NAME not like "%"||tableLastName1
  order by t.TABLE_NAME;
  --声明变量,记录一行数
  v vdata%rowtype;
  n number;
  --索引名,限制最大程度为30字符
  indexName varchar2(30);
  temp varchar2(27);
  k number;
begin
     --打开游标
   open vdata;
   --循环遍历取数据
   loop
     fetch vdata into v;
     exit when vdata%NOTFOUND;
     select count(*) into n from user_ind_columns t where t.TABLE_NAME=upper(v.table_name);
     if n27 then
          temp := substr(v.table_name,0,27);
       else
          temp := v.table_name;
       end if;
       indexName := temp||"_N"||k;
       for cur in (select t.column_name,t.comments,t.TABLE_NAME from all_col_comments t where  t.table_name = upper(v.table_name) ---表名 
          and instr(lower(t.column_name), "attribute") = 0
          and instr(lower(t.COLUMN_NAME),"last_update") = 0
          and instr(lower(t.COLUMN_NAME),"version_num") = 0
          and instr(lower(t.COLUMN_NAME),"created_by") = 0
          and instr(lower(t.COLUMN_NAME),"creation_date") = 0 
          and rownum<=rowN) loop
          --判断该字段是否已经创建索引
          select count(*) into n from user_ind_columns t where t.TABLE_NAME=upper(v.table_name) and t.COLUMN_NAME=upper(cur.column_name);
          --未创建索引
          if n<1 then
            --判断索引名是否存在
            select count(*) into n from user_ind_columns t where t.INDEX_NAME=indexName;
            while n>0 loop
              k := k+1;
              indexName := temp||"_N"||k;
              select count(*) into n from user_ind_columns t where t.INDEX_NAME=indexName;
            end loop;
            --打印创建索引语句
            dbms_output.put_line("Create Index "||userName||"."||indexName||" ON "||userName||"."||cur.table_name||"("||cur.column_name||")"||" tablespace "||tablespaceName||";");
            k := k+1;
            indexName := temp||"_N"||k;
          end if;
        end loop;
     end if;
   end loop;  
   --关闭游标
   close vdata;   
end;

 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯