Here is the code. Basically the ICRTASKREFERENCE table has 31 rows I need to loop in. So the loop should runs 31 times, but for now it only runs once. Can someone help me this? much appreciate!
create or replace PROCEDURE IC_CREATE_TASKS_P AS
startnumber number:=1;
maxCount number;
taskName varchar(255);
BEGIN
SELECT count(*) INTO maxCount from ICRTASKREFERENCE;
WHILE startnumber <= maxCount
LOOP
SELECT TASKCODE INTO taskName from ICRTASKREFERENCE WHERE TASKREFERENCEID = startnumber;
taskName := UPPER(taskName);
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO ictask (
STATUS,
CATEGORY,
TASKCODE,
TASKTYPE,
SOURCETABLECODE,
MODIFIEDON,
MODIFIEDBY,
CREATEDON,
PRIORITY
)
SELECT
''OPEN'',
taskReferenceTable.CATEGORY,
taskReferenceTable.TASKCODE,
taskReferenceTable.TASKTYPE,
taskReferenceTable.SOURCETABLECODE,
SYSDATE,
''Administrator'',
SYSDATE,
taskReferenceTable.PRIORITY
FROM (SELECT * from '||taskName||' WHERE NEWFLAG=1) newFlag cross join (SELECT * from ICRTASKREFERENCE WHERE TASKREFERENCEID = '||startnumber||') taskReferenceTable WHERE newFlag.MSTID NOT IN
(SELECT SOURCETABLEID FROM ICTASK)';
END;
startnumber := startnumber + 1;
END LOOP;
END;
Insert into .. selectdo not insert anything if select returns no rows.taskNamereally exist?