有时候需要批量循环调用存储过程或包,这时候使用循环语句调用动态 SQL 的方式很方便。
存储过程如下:
如果我们想要调用2016年1月14日到2016年16日这三天的数据,则可以这样写一个匿名块:
DECLARE
plsql_block VARCHAR2(500);
report_date DATE;
BEGIN
for i in 0 .. 2 loop
report_date := to_date('2016-01-14', 'yyyy-mm-dd') + i;
-- Dynamic PL/SQL block invokes subprogram:
plsql_block := 'BEGIN P_INSERT_BONUSDETAIL(:a); END;';
/* Specify bind arguments in USING clause.
Specify mode for first parameter.
Modes of other parameters are correct by default. */
EXECUTE IMMEDIATE plsql_block
USING IN OUT report_date;
END LOOP;
END;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26506993/viewspace-1980895/
,如需转载,请注明出处,否则将追究法律责任。