CREATE OR REPLACE PROCEDURE p_createseq(tablename VARCHAR2)
AS
strsql VARCHAR2(500);
BEGIN
strsql:='create sequence '||tablename||'_SEQ MINVALUE 1 MAXVALUE 9999999999 START WITH 1 INCREMENT BY 1 CACHE 20 ORDER NOCYCLE';
EXECUTE IMMEDIATE strsql;
END;
2.触发器过程。
CREATE OR REPLACE PROCEDURE p_createtr(tablename VARCHAR2,prikeyname VARCHAR2)
AS
strsql VARCHAR2(1000);
BEGIN
strsql:='CREATE OR REPLACE TRIGGER '||tablename||'_TRG'||'
BEFORE INSERT ON '||tablename||' FOR EACH ROW
DECLARE
next_id NUMBER;
BEGIN
SELECT '||tablename||'_SEQ.NEXTVAL INTO next_id FROM dual;
:new.'||prikeyname||':=next_id;
END;';
EXECUTE IMMEDIATE strsql;
END;
接下来就可以在命令窗口下执行以下语句:
CREATE OR REPLACE PROCEDURE p_createseqandtri
AS
BEGIN
p_createseq('BS_CMP_CHECK');
p_createtr('BS_CMP_CHECK','CHECK_ID');......
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('创建失败......');
END;
这样一个过程就可以建完所有的序列和触发器,很爽吧!