FOR循环用法
create or replace procedure P_AUTO_INSERT_USER_ROLE(EXEC_DATE IN DATE) is
/**
* 根据查到的数据循环遍历
*/
begin
DECLARE
V_START_DATE VARCHAR2(30);
V_END_DATE VARCHAR2(30);
begin
-- 根据执行时间获取5天前的数据做处理
select to_char(EXEC_DATE-6,'yyyy-mm-dd') into V_START_DATE from dual;
select to_char(EXEC_DATE-5,'yyyy-mm-dd') into V_END_DATE from dual;
-- 对查询到的数据进行遍历 ROW_USER为自定义变量 作为查询返回的每一行数据 ROW_USER.字段名 可取值
for ROW_USER in (
select T.* from TAB_USER T WHERE 1=1 AND IS_DELETED = 0
AND T.CREATE_DATE between to_date(V_START_DATE,'yyyy-mm-dd') AND to_date(V_END_DATE,'yyyy-mm-dd')
) LOOP
insert into TAB_USER_ROLE
(
USER_ID,
ROLE_ID,
CREATOR,
CREATE_DATE,
IS_DELETED
)
VALUES
(
ROW_USER.USER_ID,
'100001',
'超级管理员',
sysdate,
0
);
end LOOP;
end;
end P_AUTO_INSERT_USER_ROLE;