oracle批量添加指定表前缀的索引SQL语句[通俗易懂]

oracle批量添加指定表前缀的索引SQL语句[通俗易懂]oracle批量添加指定表前缀的索引SQL语句 需要输入用户名,表空间,索引个数,表名前缀,过滤的表名后缀 declare –用户名 userName varchar2(50) :='s…

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 n<rowN then
       k := 1;
       --dbms_output.put_line("表名:-----"||v.table_name);
       select length(v.table_name) into n from dual;
       if n>27 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;

代码100分

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8473.html

(0)
上一篇 2023-02-27
下一篇 2023-02-27

相关推荐

  • mysql join 索引_MySQL实用教程第三版例题4.7

    mysql join 索引_MySQL实用教程第三版例题4.7以下是结合网上及此前面试时遇到的一些关于mysql索引的面试题。 若对mysql索引不太了解可先翻阅相关文章 大白话 mysql 之深入浅出索引原理 – 上 大白话 mysql 之深入浅出索引原理 –

    2023-04-16
    164
  • Duplicate复制数据库并创建物理StandBy(pfile版本)「建议收藏」

    Duplicate复制数据库并创建物理StandBy(pfile版本)「建议收藏」1设定环境如下: Primary数据库 IP 172.17.22.16 SID orcl Standby数据库 IP 172.17.22.17 SID orcl 设置提示,以区分操作的位置 prima

    2022-12-29
    157
  • 基于Docstring的Python编程风格指南

    基于Docstring的Python编程风格指南 Python是一种简单易学、优雅简洁的编程语言,受到越来越多的开发者的青睐。而良好的编程风格对于Python项目的可读性和可维护性至关重要,同时也是Python社区所秉持的价值观之一。本文介绍基于Docstring的Python编程风格指南,帮助开发者提高代码的可读性、可维护性和可重用性。

    2024-07-10
    49
  • Python By Walk:如何让您的代码更易读、更高效?

    Python By Walk:如何让您的代码更易读、更高效?Python语言有着简单易学、可读性强等特点,但是当代码量变大后,代码阅读体验也会变得更为困难。为了让您的Python代码更易读、更高效,接下来我们将从选取变量名、函数的设计、代码注释、代码优化等多个方面详细阐述。

    2024-01-30
    107
  • 读者来信 | 如何判断HBase Major Compact是否执行完毕?(已解决)[亲测有效]

    读者来信 | 如何判断HBase Major Compact是否执行完毕?(已解决)[亲测有效]前言: 之前有朋友加好友与我探讨一些问题,我觉得这些问题倒挺有价值的;于是就想在本公众号开设一个问答专栏,方便技术交流与分享,专栏名就定为: 《读者来信》 。欢迎关注本人微信公众号《HBase工作笔记

    2023-02-15
    147
  • 执行DB devices时提示版本不匹配「建议收藏」

    执行DB devices时提示版本不匹配「建议收藏」
    重新安装了adb和夜神模拟器后,启动夜神模拟器,并在控制台执行adb devices时总是提示错误: List of devices attachedadb…

    2023-04-08
    140
  • mysql整理_MySQL架构

    mysql整理_MySQL架构1.在 数据库内如何让自动增加字段从0开始 2.表中有A B C三列时,用SQL语句实现:当A列大于B列时选择A列,否则选择B列,当B列大于C列时选择B,否则选择C列 3. 是一个 存储系统。支持五种

    2023-02-10
    185
  • Python退出程序教程

    Python退出程序教程在编写Python程序时,退出程序是一项基本的任务。Python提供了多种方法来退出程序,包括使用异常、调用系统退出函数、使用sys模块等等。本篇文章将详细介绍Python通过不同方式退出程序的方法。

    2024-09-19
    16

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注