0

我在一个网站上找到了以下功能。对于特定列,此函数将列值作为逗号分隔值提供,例如 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.
4

1 回答 1

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;
于 2013-08-30T09:27:15.887 回答