`
doingwell
  • 浏览: 34583 次
  • 性别: 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客户端

    1. **oci.dll**:Oracle Call Interface,是Oracle客户端的核心库,提供了与Oracle数据库交互的API,使得应用程序可以执行SQL语句、调用存储过程等操作。 2. **sqlplus**:这是一个命令行工具,允许用户直接输入SQL...

    ORACLE常用命令

    主要包括以下几个方面: - **创建用户**: 使用`CREATE USER 用户名 IDENTIFIED BY 密码`命令来创建新的数据库用户。 - **授予权限**: 使用`GRANT 权限 TO 用户名`命令来授予用户特定的权限。 - **撤销权限**: 使用`...

    Windows版oracle10g精简客户端(带sqlldr)

    Oracle 10g是一款历史悠久的关系型数据库管理系统,广泛应用于企业级的数据存储与管理。Windows版的Oracle 10g客户端是专为在Windows操作系统上运行而设计的,它提供了连接到Oracle服务器、执行SQL查询、数据导入...

    讲解Oracle面试过程中常见的二十个问题

    数据库启动的几个阶段 数据库启动经历以下三个主要阶段: - `STARTUP NOMOUNT`:仅实例启动。 - `STARTUP MOUNT`:数据库装载但未打开。 - `STARTUP OPEN`:数据库完全打开,可供用户访问。 ### 16. V$视图与GV$...

    tom的几个常用工具10g

    标题中的“tom的几个常用工具10g”指的是Thomas Kyte(通常被简称为Tom)推荐的一些在数据库管理和开发中常用的工具,这里的“10g”可能是指Oracle 10g版本,因为Thomas Kyte是Oracle数据库领域的知名专家。...

    连接oracle的jar包

    这个驱动不需要中间层如Oracle的oci库,因此适用于跨平台的环境。描述中的“只需一个简单的jar即可连接Oracle数据库”很可能指的是Thin驱动的jar包,例如`ojdbc.jar`或`ojdbc6.jar`等。 要使用这个jar包,首先需要...

    Oracle中比对2张表之间数据是否一致的几种方法

    本文将详细介绍几种常用的在Oracle中对比两张表数据一致性的方式。 #### 方法一:利用Oracle 11g中的`dbms_comparison`包 当两张表的数据结构完全相同,并且其中一张表所在数据库版本为Oracle 11g及以上时,可以...

    oracle心得

    - **特点**:支持变量声明、流程控制语句(如 IF-THEN-ELSE、LOOP)等,适用于编写存储过程、触发器等。 **2. 存储过程** - **定义**:存储过程是一组预先编写的 SQL 语句和过程性语句的集合,它们被存储在数据库...

    oracledba.rar_oracle_oracle practice

    Oracle数据库实践主要围绕以下几个核心概念展开: 1. **数据库实例与服务**:数据库实例是Oracle在内存中创建的一组进程和数据结构,用于管理数据库。服务是用户连接到数据库的方式,可以通过企业管理器(EM)或SQL...

    常用数据库的jar集合,包含mysql,oracle,sqlserver,Access等数据库

    本压缩包集合包含了几个常用数据库的JDBC驱动jar文件,包括MySQL、Oracle、SQL Server和Access,这些都是开发人员进行数据库操作的必备组件。 1. **MySQL**:MySQL是一款开源、免费的关系型数据库管理系统,广泛...

    华为SAN存储在Oracle_VM系统下的主机连通性指南_V5

    ### 华为SAN存储在Oracle_VM系统下的主机连通性指南_V5 #### 操作系统介绍 ##### OVM简介 Oracle VM (OVM) 是一款基于开源 Xen hypervisor 的企业级虚拟化平台,旨在为企业提供高可用性、高性能以及易于管理的...

    oracle数据库的相关知识,包含dml dql,索引,视图,游标,存储过程等

    2. **NoSQL**:非关系型数据库,如Redis等,它们通常采用键值对的形式存储数据,适用于大数据处理场景。 #### 三、数据库语言分类 数据库语言主要包括以下几种: 1. **DDL(Data Definition Language)**:数据...

    鸿鹄论坛_oracle中文知识库

    它提供了丰富的功能,包括数据存储、事务处理、备份恢复、性能优化等,适用于各种规模的企业级应用。 该CHM文件很可能包含了以下几方面的Oracle知识: 1. **基础概念**:介绍Oracle数据库的基本结构,如表、索引、...

    Oracle数据库实战培训

    Oracle数据库的体系结构主要包括以下几个组成部分: 1. **数据文件(datafiles)**:用于存储表空间中的数据,每个表空间至少包含一个数据文件。 2. **重做日志文件(redolog files)**:记录对数据库所做的更改,用于...

    《数据库应用技术(oracle)》教案

    - **Oracle 10g安装步骤**:首先从Oracle官方网站下载适用于Windows系统的Oracle应用服务器10g软件。安装完成后,需确保两个关键服务已启动,分别是OracleOraDb10g_home1TNSListener(监听服务)和OracleServiceXSCJ...

    Oracle客户端和PLSQL(32位)

    32位Oracle客户端适用于32位Windows操作系统。以下是一些关键组件: 1. **Oracle Net Services (formerly known as SQL*Net)**:这是Oracle客户端的核心部分,负责在网络间传输数据,支持各种网络协议如TCP/IP、 ...

    深入浅出Oracle_EBS之Forms开发指南

    在实际开发过程中,有几个触发器是非常常用的: - **WHEN-VALIDATE-ITEM**:用于验证表单项的有效性。 - **WHEN-NEW-FORM-INSTANCE**:在新实例化Form时执行。 - **BEFORE-QUERY-BLOCK**:在查询数据块之前执行。 ...

    sql,oracle数据库驱动程序

    而Oracle数据库则是由甲骨文公司提供的一个强大的、企业级的关系型数据库管理系统,它支持SQL标准并提供许多高级特性,如分布式数据库、物质化视图、存储过程等。 在JSP项目中,开发者通常需要与数据库进行交互,...

    几种常用数据库的连接 mysql sql server oracle

    数据库连接是软件开发中至关重要的一个环节,尤其是在处理数据存储和检索时。本文将详细介绍如何连接到几种常见的数据库系统:SQL Server 2000、Oracle、Sybase 和 MySQL。 1. **连接 SQL Server 2000**: SQL ...

    oracle 常用问题

    这种直接访问方式可以提高性能,适用于大型数据库系统。 2. **区分64-bit 和 32-bit 版本**:可以通过SQL*Plus命令行工具执行`select * from v$version;`来查看Oracle版本信息。如果是64位版本,通常会在返回的结果...

Global site tag (gtag.js) - Google Analytics