我在网站上找到了以下功能。对于特定列,此函数将列值指定为逗号分隔值,如a,b,c,d等。有没有办法让我可以将这些值作为'a','b','c','d'等等。
CREATE OR REPLACE FUNCTION rowconcat(q in VARCHAR2) RETURN VARCHAR2 IS
ret VARCHAR2(4000);
hold VARCHAR2(4000);
cur sys_refcursor;
BEGIN
OPEN cur FOR q;
LOOP
FETCH cur INTO hold;
EXIT WHEN cur%NOTFOUND;
IF ret IS NULL THEN
ret := hold;
ELSE
ret := ret || ',' || hold;
END IF;
END LOOP;
RETURN ret;
END;
我已经尝试了
IF ret IS NULL THEN
ret := '''|| hold || ''';
ELSE
ret := ret || ',' || '''||hold || ''';
END IF;
它给我的结果是
'|| hold || ','||hold || ','||hold || ','||hold || ','||hold || ','||hold || ','||hold || ','||hold || ','||hold || ','||hold || and so on.
答案 0 :(得分:1)
替换功能的以下部分,
IF ret IS NULL THEN
ret := hold;
ELSE
ret := ret || ',' || hold;
END IF;
有了这个,
IF ret IS NULL THEN
ret := ''''|| hold ||'''';
ELSE
ret := ret || ',' || ''''||hold || '''';
END IF;