Oracle数据库可重复执行脚本整理方法

匿名 (未验证) 提交于 2019-12-03 00:15:02

使用说明

  • 此模板适用于已经建好的数据库和表想导出重复执行的情况
  • 导出的时候建议不要使用Navicat工具,这样会导出很多无用的代码
  • 此模板包括序列、表结构、触发器、注释
  • 未完待续……
--创建序列eam_roleandmenu  DECLARE     s_count   NUMBER; BEGIN     SELECT COUNT (1)     INTO s_count     FROM user_sequences     WHERE sequence_name = UPPER ('seq_eam_roleandmenu');      IF s_count = 0     THEN         EXECUTE IMMEDIATE '                CREATE SEQUENCE seq_eam_roleandmenu   INCREMENT BY 1   START WITH 1   MINVALUE 1   MAXVALUE 99999999999   NOCYCLE   NOORDER   NOCACHE     ';     END IF; END; /  -------创建eam_roleandmenu表  DECLARE     s_count   NUMBER; BEGIN     SELECT COUNT (1)     INTO s_count     FROM user_tables     WHERE table_name = UPPER ('eam_roleandmenu');      IF s_count = 0     THEN         EXECUTE IMMEDIATE 'CREATE TABLE eam_roleandmenu 					(id                             NUMBER , 					rolecode                       NUMBER NOT NULL, 					menuid                         VARCHAR2(8 BYTE) NOT NULL, 					empid                          NUMBER NOT NULL, 					dpid                           NUMBER NOT NULL, 					create_date                    DATE DEFAULT SYSDATE NOT NULL, 					update_date                    DATE DEFAULT SYSDATE NOT NULL)';     END IF; END; /  -------创建eam_roleandmenu主键  DECLARE     num   NUMBER; BEGIN     SELECT COUNT (1)     INTO num     FROM user_constraints a     WHERE a.constraint_name = UPPER ('pk_eam_roleandmenu');      IF num = 0     THEN         EXECUTE IMMEDIATE 'ALTER TABLE eam_roleandmenu ADD CONSTRAINT pk_eam_roleandmenu PRIMARY KEY (id) USING INDEX';     END IF; END; /  -------创建eam_class_style触发器  CREATE OR REPLACE TRIGGER trg_eam_roleandmenu     BEFORE INSERT     ON eam_roleandmenu     REFERENCING NEW AS new OLD AS old     FOR EACH ROW DECLARE     integrity_error   EXCEPTION;     errno             INTEGER;     errmsg            CHAR (200); BEGIN     IF :new.id IS NULL OR :new.id <= 0     THEN         SELECT seq_eam_roleandmenu.NEXTVAL INTO :new.id FROM DUAL;     END IF; --  Errors handling EXCEPTION     WHEN integrity_error     THEN         raise_application_error (errno, errmsg); END; /  -- Comments for eam_roleandmenu COMMENT ON TABLE eam_roleandmenu IS '角色菜单表' / COMMENT ON COLUMN eam_roleandmenu.create_date IS '创建时间' / COMMENT ON COLUMN eam_roleandmenu.dpid IS '客户代码' / COMMENT ON COLUMN eam_roleandmenu.empid IS '职员ID' / COMMENT ON COLUMN eam_roleandmenu.id IS '编号,自动增长' / COMMENT ON COLUMN eam_roleandmenu.menuid IS '菜单ID' / COMMENT ON COLUMN eam_roleandmenu.rolecode IS '角色code' / COMMENT ON COLUMN eam_roleandmenu.update_date IS '更新时间' /  
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!