oracle数据结构修改,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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值