oracle脚本书写

一、建表脚本:

 1 DECLARE
 2     V_COUNT     NUMBER;
 3     V_SQL         VARCHAR2(8000);
 4 BEGIN
 5     SELECT COUNT(1) INTO V_COUNT FROM USER_TABLES T WHERE T.TABLE_NAME='TABLE_ORDER';
 6     IF V_COUNT <= 0 THEN
 7         V_SQL := 'create table TABLE_ORDER' ||
 8         '(' ||
 9         'SID                NUMBER(16) not null,' ||
10         'ORDER_ID           VARCHAR2(20) not null,' ||
11         'ORDER_TYPE         CHAR(10)' ||
12         ')';
13         EXECUTE IMMEDIATE V_SQL;
14         EXECUTE IMMEDIATE 'comment on table TABLE_ORDER  is ''订单表''';
15         EXECUTE IMMEDIATE 'comment on column TABLE_ORDER.SID  is ''序号''';
16         EXECUTE IMMEDIATE 'comment on column TABLE_ORDER.ORDER_ID  is ''订单号''';
17         EXECUTE IMMEDIATE 'comment on column TABLE_ORDER.ORDER_TYPE  is ''订单类型(A-生活用品,B-办公用品)''';
18         EXECUTE IMMEDIATE 'alter table TABLE_ORDER  add constraint PK_TABLE_ORDER primary key (ORDER_ID, ORDER_TYPE)';
19         DBMS_OUTPUT.PUT_LINE('TABLE_ORDER表创建成功');
20     ELSE
21         DBMS_OUTPUT.PUT_LINE('TABLE_ORDER已存在');
22     END IF;
23   
24     -- TABLE_ORDER 新增 UPDATETIME 字段
25     SELECT COUNT(1) INTO V_COUNT FROM USER_TAB_COLUMNS T WHERE T.TABLE_NAME='TABLE_ORDER' AND T.COLUMN_NAME='UPDATETIME';
26     IF V_COUNT <= 0 THEN
27         EXECUTE IMMEDIATE 'ALTER TABLE TABLE_ORDER ADD UPDATETIME VARCHAR2(30) NULL';
28         EXECUTE IMMEDIATE 'COMMENT ON COLUMN TABLE_ORDER.UPDATETIME  IS ''更新日期''';
29     END IF;
30   
31     -- TABLE_ORDER 修改 ORDER_ID 类型和长度
32     SELECT COUNT(1) INTO V_COUNT FROM USER_TAB_COLUMNS T WHERE T.TABLE_NAME='TABLE_ORDER' AND T.COLUMN_NAME='ORDER_ID';
33     IF V_COUNT > 0 THEN
34         EXECUTE IMMEDIATE 'ALTER TABLE TABLE_ORDER MODIFY (ORDER_ID NUMBER(30))';
35     END IF;
36 END;
37 /

二、建视图脚本:

 1 -- 视图1
 2 CREATE OR REPLACE VIEW VIEW_TEACHER AS
 3 SELECT 
 4     'Tom'       AS TEACHER_NAME, 
 5     2           AS TEACHER_CLASS, 
 6     'CHINA'     AS TEACHER_COUNTRY
 7 FROM DUAL;
 8 /

 脚本可以保存到 .sql 文件,方便执行

 三、批量删除指定前缀的表:

1 --删除指定前缀的所有表
2 declare
3 begin
4     for vcur in (select t.TABLE_NAME from user_tables t where t.TABLE_NAME like 'PREFIX_NAME%')
5         loop
6             execute immediate 'drop table ' || vcur.table_name;
7         end loop;
8     commit;
9 end;

 

posted on 2021-02-20 16:54  老酒馆  阅读(606)  评论(0编辑  收藏  举报

导航