ORACLE修改数据结构语句

1. 添加序列
DECLARE V1 NUMBER;
BEGIN 
SELECT COUNT(1) INTO V1 FROM USER_SEQUENCES WHERE SEQUENCE_NAME='UN_TB_TJ_SICKNES';
IF V1 = 0
THEN 
EXECUTE IMMEDIATE
'CREATE SEQUENCE UN_TB_TJ_SICKNES
MINVALUE 0
MAXVALUE 9999999999999999999999999
START WITH 1
INCREMENT BY 1
NOCACHE';
END IF;
END;

2. 添加索引
DECLARE NUM NUMBER; 
BEGIN SELECT COUNT(1) INTO NUM FROM USER_INDEXES 
WHERE INDEX_NAME='INX_TD_TJ_BHKIMPORT_UPNUM'; 
IF NUM=0 THEN EXECUTE IMMEDIATE 
'CREATE INDEX INX_TD_TJ_BHKIMPORT_UPNUM ON TD_TJ_BHKIMPORT (UPDATE_NUM)'; 
END IF;
END;

3. 删除字段
DECLARE
  NUM INT;
BEGIN
  SELECT COUNT(1)
    INTO NUM
    FROM COLS
   WHERE TABLE_NAME = UPPER('AAA')
     AND COLUMN_NAME = UPPER('FFF');
  IF NUM = 1 THEN
    EXECUTE IMMEDIATE 'ALTER TABLE AAA DROP COLUMN FFF';
  END IF;
END;

4. 添加字段
DECLARE
  NUM INT;
BEGIN
  SELECT COUNT(1)
    INTO NUM
    FROM COLS
   WHERE TABLE_NAME = UPPER('TB_TJ_BHKSCH')
     AND COLUMN_NAME = UPPER('PYXNAM');
  IF NUM = 0 THEN
    EXECUTE IMMEDIATE 'ALTER TABLE TB_TJ_BHKSCH ADD PYXNAM VARCHAR2(50)';
  END IF;
END;

5. 修改字段
DECLARE NUM NUMBER; 
BEGIN 
SELECT COUNT(1) INTO NUM FROM COLS WHERE  TABLE_NAME = UPPER('TD_TJ_BHKIMPORT') 
       AND  COLUMN_NAME=UPPER('ORGCOD') AND NULLABLE='N';
IF NUM=1 
THEN 
EXECUTE IMMEDIATE 
'ALTER TABLE TD_TJ_BHKIMPORT MODIFY ORGCOD VARCHAR2(50) NULL';
END IF;
END;

6. 添加新表
DECLARE NUM NUMBER; 
BEGIN SELECT COUNT(1) INTO NUM FROM USER_TABLES WHERE TABLE_NAME='TD_TJ_TJSORT'; 
IF NUM=0 THEN EXECUTE IMMEDIATE 
'
CREATE TABLE TD_TJ_TJSORT  (
   RID                  INTEGER                         NOT NULL,
   MTBIDX               VARCHAR2(36),
   TJSORTID             INTEGER,
   TJSORTNAM            VARCHAR2(100),
   CONSTRAINT PK_TD_TJ_TJSORT PRIMARY KEY (RID),
   CONSTRAINT FK_TD_TJ_TJSORT1 FOREIGN KEY (MTBIDX) REFERENCES TD_ZWTJ_BHK(RID),
   CONSTRAINT FK_TD_TJ_TJSORT2 FOREIGN KEY (TJSORTID) REFERENCES TB_TJ_TJSORT(RID)    
)
'; 
END IF; 
END;

7. 添加外键
DECLARE NUM NUMBER; 
BEGIN 
SELECT COUNT(1) INTO NUM FROM USER_CONSTRAINTS WHERE 
CONSTRAINT_NAME='FK_TS_RPT_REF_XT_UNIT' AND TABLE_NAME='TS_RPT' ;
IF NUM=0 
THEN 
EXECUTE IMMEDIATE 
'ALTER TABLE TS_RPT
   ADD CONSTRAINT FK_TS_RPT_REF_XT_UNIT FOREIGN KEY (UNIT_ID)
      REFERENCES XT_UNIT (RID)';
END IF;
END;

8. 更改INTEGER为NUMBER
ALTER TABLE TD_FILL_REC ADD FILL_MONEY2 NUMBER(8,2);
ALTER TABLE TD_FILL_REC MODIFY FILL_MONEY NULL;
UPDATE TD_FILL_REC SET FILL_MONEY2=FILL_MONEY,FILL_MONEY=NULL;
COMMIT;
ALTER TABLE TD_FILL_REC MODIFY FILL_MONEY NUMBER(8,2);
UPDATE TD_FILL_REC SET FILL_MONEY=FILL_MONEY2,FILL_MONEY2=NULL;
COMMIT;
ALTER TABLE TD_FILL_REC DROP COLUMN FILL_MONEY2;
ALTER TABLE TD_FILL_REC MODIFY FILL_MONEY NOT NULL;

9. 删除索引
DECLARE
  NUM NUMBER;
BEGIN
  SELECT COUNT(1)
    INTO NUM
    FROM USER_INDEXES
   WHERE INDEX_NAME = 'INX_TD_NEWCOLLECT_DATA1';
  IF NUM = 1 THEN
    EXECUTE IMMEDIATE 'DROP INDEX TD_NEWCOLLECT_DATA_TIME_SJ';
  END IF;
END;

10. 删除AK
DECLARE
  NUM NUMBER;
BEGIN
  SELECT COUNT(1)
    INTO NUM
    FROM USER_CONSTRAINTS
   WHERE CONSTRAINT_NAME = 'AK_MENU_TEMPLATE'
     AND TABLE_NAME = 'MENU_TEMPLATE';
  IF NUM = 1 THEN
    EXECUTE IMMEDIATE 
    'ALTER TABLE MENU_TEMPLATE DROP CONSTRAINT AK_MENU_TEMPLATE CASCADE DROP INDEX';
  END IF;
END;

11. 添加AK
DECLARE
  NUM NUMBER;
BEGIN
  SELECT COUNT(1)
    INTO NUM
    FROM USER_CONSTRAINTS
   WHERE CONSTRAINT_NAME = 'AK_TB_NEWEQU_PUR_TIME'
     AND TABLE_NAME = 'TB_NEWEQU_PUR_TIME';
  IF NUM = 0 THEN
    EXECUTE IMMEDIATE 'ALTER TABLE TB_NEWEQU_PUR_TIME ADD CONSTRAINT AK_TB_NEWEQU_PUR_TIME UNIQUE (EQUTYPE_ID)';
  END IF;
END;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值