批量执行动态SQL语句
发布时间:2021-01-13 05:05:19 所属栏目:MySql教程 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 -- exesql_batchdeclare-- incomming paramv_oriSql VARCHAR2(1024):= 'create table TABLE_[N]_[D] as select * from TABLE where 1=2';-- original
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 -- exesql_batch declare -- incomming param v_oriSql VARCHAR2(1024):= 'create table TABLE_[N]_[D] as select * from TABLE where 1=2'; -- original sql v_beg NUMBER := 0; -- begin of number v_end NUMBER := 9; -- end of number [beg,end] v_begDate DATE := to_date('20130701','YYYYMMDD'); -- begin date v_endDate DATE := to_date('20130731','YYYYMMDD'); -- end date,[beg,end] v_dateSw NUMBER := 1; -- date switch 1:day,others:month -- internel var v_dateNum NUMBER := 0; v_numNum NUMBER := 0; v_strDate VARCHAR2(8); v_destSql VARCHAR2(2000); V_DATE VARCHAR2(3) := '[D]'; V_NUM VARCHAR2(3) := '[N]'; begin if INSTR(v_oriSql,V_DATE) <> 0 then if v_dateSw = 1 then v_dateNum := trunc(v_endDate,'DD') - trunc(v_begDate,'DD'); else v_dateNum := MONTHS_BETWEEN(trunc(v_endDate,'MM'),trunc(v_begDate,'MM')); end if; end if; if INSTR(v_oriSql,V_NUM) <> 0 then v_numNum := v_end - v_beg; end if; -- loop for i in 0 .. v_numNum loop for j in 0 .. v_dateNum loop if v_dateSw = 1 then v_strDate := to_char(v_begDate + j,'YYYYMMDD'); else v_strDate := to_char(ADD_MONTHS(v_begDate,j),'YYYYMM'); end if; v_destSql := REPLACE(v_oriSql,V_NUM,v_beg + i); v_destSql := REPLACE(v_destSql,V_DATE,v_strDate); EXECUTE IMMEDIATE v_destSql; end loop; end loop; end; 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |