`

Oracle常用重复建表,索引,序列,表列等通用方法封装

阅读更多

在日常开发过程中,构建自动化的部署,要求开发人员提供的数据库Sql能够多次重复的执行,这就要求对Oracle的一些对象,例如:表,索引,序列,表的列等需要做判断,如果存在,先drop掉,然后新建。否则,脚本只能执行一次,下次执行的时候就会报对象已经被占用的错误,附件的Oracle package封装了日常使用的几个操作的解决办法。

 

  --判断表的列是否存在,存在drop掉
  procedure DROP_COLUMN_IFEXISTS(p_table_name varchar2,p_column_name varchar2);

  --判断表是否存在,存在drop掉
  procedure DROP_TABLE_IFEXISTS(p_table_name varchar2);

  --判断sequence是否存在 存在drop掉
  procedure DROP_SEQUENCE_IFEXISTS(p_sequence_name varchar2);
  
  --判断index是否存在 存在drop掉
  procedure DROP_INDEX_IFEXISTS(p_index_name varchar2);

 

调用示例,首先,将附件的Oracle package通过commond(命令行窗口)做导入。

1.打开命令窗口

Connected to Oracle9i Enterprise Edition Release 9.2.0.8.0 

Connected as oms

 

SQL>

 

2.输入@然后按下回车键,选择解压出来的1.toos_package.sql,部署package成功。

 

SQL> @

Started spooling to C:\Program Files\PLSQL Developer\1.toos_package.log

 

Creating package TOOLS_PACKAGE

==============================

 

 

Package created

 

Creating package body TOOLS_PACKAGE

===================================

 

 

Package body created

Stopped spooling to C:\Program Files\PLSQL Developer\1.toos_package.log

 

3.部署成功后,看看我们的测试sql:2.test.sql,测试sql中包含了我们日常工作常见的建立表,索引,序列,表列的操作。

--如下语句保证重复执行
call tools_package.drop_table_ifexists('test_sj123');
call tools_package.drop_index_ifexists('ind_test_name');
call tools_package.drop_sequence_ifexists('SEQ_SJ_123');
call tools_package.drop_column_ifexists('test_sj123','age');

--创建表
create table test_sj123
( 
    id integer,
    name varchar2(100)
);
--创建index
create index ind_test_name on test_sj123(name);

--创建sequence
create sequence SEQ_SJ_123
minvalue 1
maxvalue 99999
start with 1
increment by 1
nocache
cycle;

--对表增加列
alter table test_sj123 add  age integer;

 

工作中,如果需要有的时候书写系统设计文档,要将数据表的结构及注释附上,如果在word里面一个一个写,太麻烦,如果在建表的时候你已经帮表加了注释,那么恭喜你,通过一条sql就可以帮你把注释全部拉出来,拷贝粘贴到word即可。

 --将表的列类型,注释拉出来
  procedure QUERY_TABLE_COMMENTS(p_table_name varchar2,p_result out sys_refcursor);

 调用toos_package中的QUERY_TABLE_COMMENTS存储过程,如下:



 直接拷贝到word即可。

 

工作中,还有另外一种需求,对数据库表进行insert,update操作,如果表的列过多,手写sql是一件非常麻烦的事情,但是调用

  --自动生成insert,update,select等语句
  procedure autoGenerateSQL
  (
     tableName varchar2,
     type varchar2,
     out_result out varchar2
  );

 轻松帮你搞定



 执行后自动生成

insert into OMS_EXPENSE_PROVISION(PROVISION_ID,PROJECT_CODE,PROJECT_MANAGER_ID,PROJECT_MANAGER,PROJECT_NAME,APPLICATION_CODE,ORDER_AMOUNT,APP_BUSINESS_TYPE_ID,BUSINESS_MANAGER_ID,BUSINESS_MANAGER,SBU_ID,LARGER_AREA_ID,LARGER_AREA,EXPENSE_TYPE,PROVISION_MONTH,PROVISION_AMOUNT,CREATER_BY,CREATER_DATE,LAST_UPDATER_BY,LAST_UPDATER_DATE,IS_VALID,MONEY_TYPE,TECH_COOP_APPLY_TYPE) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)

 

 

  • 大小: 46.5 KB
  • 大小: 16.5 KB
分享到:
评论

相关推荐

    Oracle Json常用方法封装

    "Oracle Json常用方法封装"是一个将这些常用功能集成为PackageBody的实践,这有助于提升开发效率,保持代码的整洁和可维护性。 首先,我们需要理解Oracle中的JSON数据类型。`JSON_OBJECT`和`JSON_ARRAY`用于创建...

    oracle实操、基础、索引等

    **Oracle 实操、基础、索引等** Oracle数据库系统是全球广泛应用的关系型数据库管理系统,它在企业级数据管理中占据重要地位。以下是对标题和描述中涉及的知识点的详细阐述: 1. **Oracle 常用SQL语法和数据对象**...

    orcle索引_视图序列同义词实验

    ### Oracle索引、视图、序列与同义词实验知识点详解 #### 一、Oracle索引的创建与管理 **1.1 创建普通索引** - **实验目标**:掌握如何在Oracle数据库中为特定列创建索引。 - **实验步骤**:在SCOTT模式下,为`...

    ORACLE 常用的SQL语法和数据对象

    以下是对“ORACLE 常用的SQL语法和数据对象”这一主题的详细解释。 一、SQL基础语法 1. **SELECT语句**:用于从表中选取数据,是最基本的SQL操作。例如: ```sql SELECT column1, column2 FROM table_name; ```...

    oracle8 UML对像建模设计

    通过定义属性(attributes)、操作(operations)和方法(methods),可以创建强大的、自包含的对象,这些对象可以作为表的列存储,从而提高数据结构的灵活性和表达力。 3. **对象建模过程**:建模过程通常包括需求...

    Oracle教程

    7. Oracle体系结构和数据库设计:体系结构部分讨论了Oracle数据库的主要组件,如实例、数据库、表空间、数据文件、控制文件等。数据库设计部分则介绍了数据库设计的规范化过程,避免数据冗余,提高数据的一致性。 8...

    oracle 详细讲解教程

    Oracle数据库的基本语法涵盖了查询基础、单行函数、分组函数、多表查询、子查询和高级查询等SQL语言的使用方法。在多表查询中,可以使用如JOIN等操作连接多个表进行数据的组合查询。单行函数与分组函数在数据处理时...

    oracle常见面试题及答案

    以下是 Oracle 相关的面试题及答案,涵盖了 Oracle 的基础知识、存储过程、索引、约束、查询等方面。 1. 如何创建一个邮件系统,采用 Oracle+jsp+servlet 来完成? 答:创建一个邮件系统需要完成以下步骤: * ...

    oracle开发入门书籍

    在Oracle中,数据被组织成表、视图、索引、序列和同义词等形式。每个表由列(字段)和行(记录)组成,一个表可以看作是数据的集合。视图则可以看作是一个虚拟表,视图中的数据来自于一个或多个表的查询结果。索引...

    中南大学Oracle数据库课件

    2. **结构**:Oracle数据库的结构主要由表、视图、索引、存储过程、触发器、序列、同义词等组成。每个对象都有其特定用途,例如表用于存储数据,索引提高查询速度,存储过程封装业务逻辑,视图简化数据访问。 3. **...

    ORACLE和SQL语法区别归纳

    - Oracle支持位图索引、函数索引、复合索引等多种索引类型,而SQL标准只规定了基本的唯一索引和非唯一索引。 - Oracle的检查约束(CHECK CONSTRAINT)、唯一约束(UNIQUE CONSTRAINT)和外键约束(FOREIGN KEY ...

    oracle学习练习实验

    2. 数据库对象:在Oracle中,你需要了解各种数据库对象,如表、视图、索引、序列、存储过程、触发器等。表是存储数据的基本单元,视图是从一个或多个表中抽象出来的虚拟表。索引能提高查询速度,序列用于生成唯一的...

    oracle数据库资料

    Oracle采用关系数据模型,其中表是主要的数据结构,通过行和列来存储数据。此外,Oracle还提供了视图、索引、存储过程等高级特性来增强数据管理和访问效率。 二、SQL查询语句 Oracle支持结构化查询语言(SQL),这...

    Oracle EBS 11i库表结构

    5. **索引表(Index Tables)**:为了提高查询性能,Oracle EBS会创建索引表,加速对大量数据的检索。 6. **视图(Views)**:是SQL查询的虚拟表,它们组合了多个基础表的数据,为用户提供了一个更简洁、更有意义的...

    oracle hr用户创建脚本

    一个模式在Oracle中相当于一个逻辑数据库,它可以包含表、视图、索引、存储过程等对象。 在Oracle HR创建脚本中,首先我们需要了解一些基本概念: 1. **用户(User)**:在Oracle中,用户是数据库的访问者,拥有...

    oracle快速学习手册

    在Oracle快速学习手册中,主要涵盖了SQL和PL/SQL的基础语法,包括创建和操作表、序列、视图,以及数据的插入、更新和删除等基本操作。 一、CREATE TABLE语句 CREATE TABLE语句用于在数据库中创建新的表,这是数据库...

Global site tag (gtag.js) - Google Analytics