写一个函数getName 来返回 姓名列表 然后用 select getName (表A.a) ,b,c from 表A。 CREATE OR REPLACE FUNCTION getName (CID IN VARCHAR2) RETURN VARCHAR2 IS RESULT VARCHAR2(2000); TYPE NAMETAB IS TABLE OF 表B.bTYPE; NAME1 NAMETAB; CURSOR GETSINGERNAME IS SELECT b FROM 表B WHERE '%,'||CID|| ',%' LIKE '%,'||表B.a|| ',%' ; BEGIN OPEN GETSINGERNAME; FETCH GETSINGERNAME BULK COLLECT INTO NAME1; CLOSE GETSINGERNAME; FOR I IN 1..NAME1.COUNT LOOP RESULT := RESULT || NAME1(I)||','; END LOOP; RESULT := SUBSTR(RESULT,1,LENGTH(RESULT)-1); RETURN(RESULT); END; /
from a,b
where instr(','||a.a||',',','||b.a||',' )>0
group by a.a,a.b,a.c
http://topic.csdn.net/u/20090714/17/cdb435a4-35d6-49dd-b605-1af64c3cb374.html上面的 贴 还是你发的。我回复了。 你整天 看不看自已的贴子回复啊。上个是update 。这个是select 你就不会了?
写一个函数getName 来返回 姓名列表
然后用 select getName (表A.a) ,b,c from 表A。
CREATE OR REPLACE FUNCTION getName (CID IN VARCHAR2) RETURN VARCHAR2
IS
RESULT VARCHAR2(2000);
TYPE NAMETAB IS TABLE OF 表B.bTYPE;
NAME1 NAMETAB;
CURSOR GETSINGERNAME IS
SELECT b FROM 表B
WHERE '%,'||CID|| ',%' LIKE '%,'||表B.a|| ',%'
;
BEGIN
OPEN GETSINGERNAME;
FETCH GETSINGERNAME BULK COLLECT INTO NAME1;
CLOSE GETSINGERNAME;
FOR I IN 1..NAME1.COUNT LOOP
RESULT := RESULT || NAME1(I)||',';
END LOOP;
RESULT := SUBSTR(RESULT,1,LENGTH(RESULT)-1);
RETURN(RESULT);
END;
/