17,086
社区成员
发帖
与我相关
我的任务
分享
DECLARE
slist VARCHAR2 (50) := '1001,1002,1003';
BEGIN
DECLARE
CURSOR list_rows
IS
SELECT DISTINCT STAFFID FROM TSS_STAFF_FUNCGRP WHERE FUNCGRPID IN (slist);
BEGIN
FOR list_row IN list_rows
LOOP
dbms_output.put_line(list_row.STAFFID);
END LOOP;
END;
dbms_output.put_line('OK');
END;
CREATE TABLE TSS_STAFF_FUNCGRP AS SELECT LEVEL STAFFID,1000+LEVEL UNCGRPID FROM dual CONNECT BY LEVEL < 4;
SET serveroutput ON;
DECLARE
slist VARCHAR2(50) := '1001,1002,1003';
BEGIN
FOR rc IN (SELECT STAFFID FROM TSS_STAFF_FUNCGRP
WHERE UNCGRPID IN (SELECT REGEXP_SUBSTR(slist,'[0-9]{1,}',1,LEVEL)
FROM dual CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(slist,'[0-9]*',''))+1))LOOP
dbms_output.put_line(rc.staffid);
END LOOP;
END;
/
DECLARE
TYPE Listcurtyp IS REF CURSOR;
list_rows Listcurtyp;
slist VARCHAR2 (50) := '1001,1002,1003';
TYPE Staffidlist IS TABLE OF NUMBER;
staffids Staffidlist;
BEGIN
OPEN list_rows FOR 'SELECT DISTINCT STAFFID FROM TSS_STAFF_FUNCGRP WHERE UNCGRPID IN (' || slist || ')';
FETCH list_rows BULK COLLECT INTO staffids;
CLOSE list_rows;
FOR i IN staffids.FIRST .. staffids.LAST LOOP
DBMS_OUTPUT.PUT_LINE(staffids(i));
END LOOP;
END;
/