--利用存储过程动态创建表及基于该表的触发器
--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代码端注释掉,让错误信息抛出来看看到底是什么错误
原文链接:https://www.f2er.com/oracle/211870.html