ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 动态SQL

动态SQL

原创 Linux操作系统 作者:FISHLUNCN 时间:2009-05-25 22:52:42 0 删除 编辑

create or replace procedure cseq(sequence_name in varchar2,tname in varchar2,inid in varchar2) is
v_cursor    number;
seq_string varchar2(2000);
tr_string  varchar2(2000);
begin
   seq_string := 'CREATE SEQUENCE lkss_'||sequence_name||' START ';
   seq_string := seq_string||'WITH 1 MAXVALUE 999999999999999 INCREMENT BY 1 NOCACHE CYCLE';
   v_cursor := dbms_sql.open_cursor;
   dbms_sql.parse(v_cursor,seq_string,dbms_sql.native);

   tr_string := 'CREATE TRIGGER TR_'||sequence_name||' BEFORE INSERT ON '||tname||' FOR EACH ROW ';
   tr_string := tr_string||'DECLARE NEW_ID NUMBER; BEGIN SELECT LKSS_'||sequence_name||'.NEXTVAL INTO NEW_ID FROM DUAL;';
   tr_string := tr_string||':NEW.'||inid||' := NEW_ID; :new.create_date := sysdate; end;';
   dbms_sql.parse(v_cursor,tr_string,dbms_sql.native);
   dbms_sql.close_cursor(v_cursor);
end;

call cseq('temp_table','temp_table','id');

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/109975/viewspace-604103/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-05-25

  • 博文量
    3
  • 访问量
    2088