declare
v_rowcount integer;
v_rowcount1 integer;
v_rowcount2 integer;
begin
select count(*) into v_rowcount from dual where exists(
select * from col
where tname = upper(‘bailcalcinfo‘)
and cname = upper(‘operator_no‘) );
if v_rowcount = 0 then
execute immediate ‘alter table bailcalcinfo add (operator_no varchar2(18) default ‘‘ ‘‘ NOT NULL)‘;
end if;
select count(*) into v_rowcount1 from user_indexes where index_name =‘IDX_BAILCALCINFO‘;
if v_rowcount1 > 0 then
select count(*) into v_rowcount2 from dual
where exists(select 1 from user_ind_columns where index_name = ‘IDX_BAILCALCINFO‘ and column_name = ‘FUTU_EXCH_TYPE‘ and column_position = 1)
and exists(select 1 from user_ind_columns where index_name = ‘IDX_BAILCALCINFO‘ and column_name = ‘CONTRACT_CODE‘ and column_position = 2)
and exists(select 1 from user_ind_columns where index_name = ‘IDX_BAILCALCINFO‘ and column_name = ‘ENTRUST_BS‘ and column_position = 3)
and exists(select 1 from user_ind_columns where index_name = ‘IDX_BAILCALCINFO‘ and column_name = ‘HEDGE_TYPE‘ and column_position = 4)
and exists(select 1 from user_ind_columns where index_name = ‘IDX_BAILCALCINFO‘ and column_name = ‘OPERATOR_NO‘ and column_position = 5);
-- 存在但是不正确,则删除索引
if v_rowcount2 = 0 then
execute immediate ‘drop index hs_futures.IDX_BAILCALCINFO‘;
end if;
end if;
-- 未存在 OR 存在但是不正确,都要重建索引
if v_rowcount1 = 0 or v_rowcount2 = 0 then
execute immediate ‘CREATE INDEX hs_futures.IDX_BAILCALCINFO ON hs_futures.bailcalcinfo(futu_exch_type,contract_code,entrust_bs,hedge_type,operator_no)tablespace HS_FUTURES_IDX‘;
end if;
end;
/
oracle 修改表结构及表索引 PLSQL脚本写法
时间: 2024-10-11 00:39:23
oracle 修改表结构及表索引 PLSQL脚本写法的相关文章
Oracle中复制表结构和表数据
Oracle中复制表结构和表数据 1. 复制表结构及其数据(目标表不存在): create table table_name_new as select * from table_name_old; 2. 只复制表结构(目标表不存在,加入一个永远不可能成立的条件.): create table table_name_new as select * from table_name_old where 1=2; 3. 只复制表数据(目标表已经存在): 如果两个表结构一样: insert into t
PLSQL Developer来实现不同数据库的表结构以及表数据同步
PLSQL Developer菜单栏中 Tools选项下有Compare User Objects和Compare Table Data功能. 一.Tools --> compare user objects 该功能用于比较不同用户所拥有的对象(包括table.sequence.function.procedure.view等),并生成同步差异的sql脚本,用户通过执行该脚本,可保持两个用户的对象结构的同步,当然你也可以选择一个对象或者多个对象来进行比较. 操作步骤: 1. 选择样本库的对比对象
mysql 复制表结构(包括索引等)、表内容
=============================================== 2019/7/16_第1次修改 ccb_warlock =============================================== mysql库中有一张表查询要较大,最后采取的方案是清理数据只保留近期.但是有需要保留原表所有数据的备份,由此才尝试了复制表结构.表内容的sql脚本. 一.复制表结构(包括索引等) CREATE TABLE <
Oracle获取表结构信息:表名、是否视图、字段名、类型、长度、非空、主键
select a.TABLE_NAME as "TableName", case when (select count(*) from user_views v where v.VIEW_NAME =a.TABLE_NAME )>0 then 'V' else 'U'end as "TableType", a.COLUMN_NAME as "ColumnName", A.COLUMN_ID as "ColumnIndex"
oracle表结构和表内容差异比对
oracle表结构和表内容差异比对 oracle中有三种集合操作,他们会把左边和右边的select 结果集进行集合操作. union 并集 intersect 交集 minus 差集 假设有如下两张表 STUDENT_A 和 STUDENT_B create table STUDENT_A ( id VARCHAR2(36) not null, name VARCHAR2(100), age NUMBER, sex VARCHAR2(2) ); insert into STUDENT_A (id
从oracle数据库导出数据(表结构,表数据,视图,存储过程,序列)
package com.ahzysoft.export; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintStream; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java
Mysql复制表结构、表数据以及修改主键
mysql查看表结构命令 show columns from 表名; 1.复制表结构及数据到新表 CREATE TABLE 新表SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除. 不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key.Extra(auto_increment)等属性.需要自己用"alter"添加,而且容易搞错. 2.只复制表结构到新表 CRE
mysqldump批量导出(多张表)表结构及表数据
Mysql 批量导出表结构(数据) 仅导出结构,不导出数据: 1.导出數據库為dbname的表结构 mysqldump -h主机地址 -u用户名 -p密码 -d dbname >db.sql; 2.导出數據库為dbname某张表(test)结构 mysqldump -h主机地址 -u用户名 -p密码 -d dbname test>db.sql; 导出结构+数据: 3.导出數據库為dbname所有表结构及表數據(不加-d) mysqldump -h主机地址 -u用户
mysql导出/导入表结构以及表数据
导出: 命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 脚本名; 1.导出数据库为dbname的表结构(其中用戶名为root,密码为dbpasswd,生成的脚本名为db.sql) mysqldump -uroot -pdbpasswd -d dbname >db.sql; 2.导出数据库为dbname某张表(test)结构 mysqldump -uroot -pdbpasswd -d dbname test>db.sql; 3.导出数据库为