`
doingwell
  • 浏览: 34012 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

几个常用的存储过程,适用于ORACLE

 
阅读更多

在工作中常用的存储过程,在此做一个总结。全部都是我自己写的,如果有问题欢迎指正。

 

1.清空所有表的数据,谨慎使用。

    在搭建开发环境的时候,时常需要清除所有表的数据,而只留表结构,所以写了一个存储过程,使用它的前提是没有外键约束。

 

 

--清空表数据
create or replace procedure pro_clean_all_table as
v_sql varchar2(2000 char);
cursor cur is select table_name from user_tables order by table_name;
i integer;
begin
  i:=0;
  for rows in cur loop
    v_sql:='truncate table "'||rows.table_name||'"';
    i:=i+1;
    execute immediate v_sql;
    commit;
  end loop;
  dbms_output.put_line('cleaned '||i||' table(s).');
end pro_clean_all_table;

 

 

2.把所有的以字节定义的varchar2的长度改为以字符定义的varchar2长度。如果以字节定义会引起中文长度无法控制的问题。

 

create or replace procedure pro_fix_varchar as
cursor fieldList is
  select T1.TABLE_NAME,T1.COLUMN_NAME,T1.DATA_LENGTH from USER_TAB_COLUMNS T1
   left join user_tables T2 on T2.TABLE_NAME=T1.TABLE_NAME
   where T2.TABLE_NAME is not null
   and T2.TABLESPACE_NAME=(select DEFAULT_TABLESPACE from USER_USERS)
   and CHAR_USED='B';
tblName varchar2(2000);
fieldName varchar2(2000);
dataLen varchar2(10);
sqlStr varchar2(2000);
cnt integer;
BEGIN
  dbms_output.put_line('begin');
  cnt:=0;
  open fieldList;
  loop
    fetch fieldList into tblName,fieldName,dataLen;
    exit when fieldList%notfound;
    sqlStr:='alter table "'||tblName||'" modify ("'||fieldName||'" varchar2('||dataLen||' char))';
    execute immediate sqlStr;
    commit;
    cnt:=cnt+1;
  end loop;
  close fieldList;
  dbms_output.put_line('fixed '||cnt||' field(s).');
end pro_fix_varchar;

 

 

3.【重要】给所有表增加table extend。在ORACLE 11g R2以上版本中,如果需要备份数据,请执行。

 

--ORACLE 11G R2 增加table extend
create or replace procedure add_table_extend as
v_sql varchar2(2000 char);
cursor cur is 
  select TABLE_NAME from user_tables
    where table_name not in
    (select segment_name from user_segments where segment_type = 'TABLE');
i integer;
begin
  i:=0;
  for rows in cur loop
    v_sql:='alter table '||rows.TABLE_NAME||' allocate extent (size 64k);';
    execute immediate v_sql;
    i:=i+1;
  end loop;
  commit;
  dbms_output.put_line('fixed '||i||' table(s).');
end add_table_extend;

 

分享到:
评论

相关推荐

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 ...

    深入解析Oracle.DBA入门进阶与诊断案例

    包括详细的操作步骤,具有很强的实战性和可操作性,适用于具备一定数据库基础、打算深入学习Oracle技术的数据库从业人员,尤其适用于入门、进阶以及希望深入研究Oracle技术的数据库管理人员。 第1章 数据库的启动...

    Toad 使用快速入门

    a) 打开存储过程编写器的几个途径: 单击总菜单栏上的第三个按钮:   点击Database - > Procedure Editor , 可以通过Schema browser来调用 b) 一些特点和优点: 1. 强大的自定义设置:从保留字的显示方式...

    SQL必知必会(第3版)--详细书签版

    本书涉及不同平台上数据的排序、过滤和分组,以及表、视图、联结、子查询、游标、存储过程和触发器等内容,通过本书读者可以系统地学习到sql 的知识和方法。  本书注重实用性,操作性很强,适合于sql 的初学者学习...

    asp.net知识库

    发布Oracle存储过程包c#代码生成工具(CodeRobot) New Folder XCodeFactory3.0完全攻略--序 XCodeFactory3.0完全攻略--基本思想 XCodeFactory3.0完全攻略--简单示例 XCodeFactory3.0完全攻略--IDBAccesser ...

    超级有影响力霸气的Java面试题大全文档

    创建了几个String Object? 两个 31、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?  SessionBean: Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个...

    java 面试题 总结

    创建了几个String Object? 两个 28、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。 以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。 public class ThreadTest1{ ...

    php网络开发完全手册

    1.2.2 PHP擅长的几个领域及产品介绍 5 1.2.3 PHP不适合做什么 6 1.2.4 其他案例 6 1.3 PHP的Hello, world预览 6 1.3.1 第一个PHP程序Hello, world 6 1.3.2 学习PHP应该准备哪些软件 8 1.3.3 相关知识领域的介绍 9 ...

    亮剑.NET深入体验与实战精要2

    1.3.10 几个常用的数学函数 27 1.4 .NET的面向对象之门 27 1.4.1 继承——“子承父业” 28 1.4.2 委托——“任务书” 35 1.4.3 事件——“年终分红” 42 1.4.4 反射——“解剖” 49 1.5 .NET开发几把小刀 52 1.5.1 ...

    亮剑.NET深入体验与实战精要3

    1.3.10 几个常用的数学函数 27 1.4 .NET的面向对象之门 27 1.4.1 继承——“子承父业” 28 1.4.2 委托——“任务书” 35 1.4.3 事件——“年终分红” 42 1.4.4 反射——“解剖” 49 1.5 .NET开发几把小刀 52 1.5.1 ...

    (重要)AIX command 使用总结.txt

    AIX常用命令://查看机器序列号,IBM的基本信息都可以通过该命令查询得到 #prtconf #oslevel -r == uname -a //操作系统版本 #oslevel //查看操作系统版本ex :5.1.0.0 #oslevel -r //ex:5100-04 == oslevel -q //...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    媒体查询 CSS媒体查询允许开发者基于浏览网站的设备的特性来应用不同的样式申明,最常用的特性是视口宽度。 GCF 谷歌内嵌浏览器框架, 使用此插件,用户可以通过Internet Explorer的用户界面,以Chrome内核的渲染方式...

    网管教程 从入门到精通软件篇.txt

    Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字) A3L:Authorware 3.x库文件 A4L:Authorware 4.x库文件 A5L:Authorware 5.x库文件 A3M,A4M:Authorware Macintosh...

    JAVA上百实例源码以及开源项目源代码

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    JAVA上百实例源码以及开源项目

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    java开源包1

    R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用也较为便捷。 Java邮箱地址验证 jaev jaev 是一个用来验证电子邮箱地址是否有效的 Java 项目。 Java的FastCGI网关 ...

    java开源包11

    R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用也较为便捷。 Java邮箱地址验证 jaev jaev 是一个用来验证电子邮箱地址是否有效的 Java 项目。 Java的FastCGI网关 ...

    java开源包2

    R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用也较为便捷。 Java邮箱地址验证 jaev jaev 是一个用来验证电子邮箱地址是否有效的 Java 项目。 Java的FastCGI网关 ...

Global site tag (gtag.js) - Google Analytics