--利用存储过程动态创建表及基于该表的触发器
--1、授权
grantcreateanysequencetoscott; grantselectanysequencetograntcreateanytriggerto;
--2、存储过程
createorreplaceproceduretest_trigger as v_namevarchar2(100); v_Sqlvarchar2(1000); begin selectto_char(sysdate,'yyyymmdd')intov_namefromdual; v_Sql:='createtablett'||v_name||'(idnumber(16),nnvarchar2(100))'; executeimmediatev_sql; v_Sql:='createsequenceseq_'||v_name||'startwith1'; v_sql:='createorreplacetriggertrig_'||v_name||'beforeinsertontt'||v_name||'foreachrowbeginselectseq_'||v_name||'.nextvalinto:new.idfromdual;end;'; /*exception whenothersthen null;*/ end;
--注意,要是存储过程执行没有问题,但有没有达到预想的结果,可以先把EXCEPTION代码端注释掉,让错误信息抛出来看看到底是什么错误 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|