DECLARE
  RESULT VARCHAR2(255);
  CURSOR cur_eq IS
    SELECT column_name
      FROM user_tab_columns
     WHERE table_name = 'EQUIPMENT';
  v_col user_tab_columns.column_name%TYPE;
BEGIN
  OPEN cur_eq;
  LOOP
    FETCH cur_eq
      INTO v_col;
    RESULT := RESULT || v_col || ','; -- 这句编译出错
    EXIT WHEN cur_eq%NOTFOUND;
  END LOOP;
  CLOSE cur_eq;
  dbms_output.put_line(RESULT);
END;

解决方案 »

  1.   

    SQL> DECLARE
      2    RESULT VARCHAR2(255);
      3    CURSOR cur_eq IS
      4      SELECT column_name
      5        FROM user_tab_columns
      6       WHERE table_name = 'T_SITE';
      7    v_col user_tab_columns.column_name%TYPE;
      8  BEGIN
      9    OPEN cur_eq;
     10    LOOP
     11      FETCH cur_eq
     12        INTO v_col;
     13      RESULT := RESULT || v_col || ','; -- 这句编译出错
     14      EXIT WHEN cur_eq%NOTFOUND;
     15    END LOOP;
     16    CLOSE cur_eq;
     17    dbms_output.put_line(RESULT);
     18  END;
     19  /UUID,SITETYPEID,NAME,CODE,TYPE,ADDRESS,PROPERTYRIGHTTYPE,XPOSITION,YPOSITION,SUBREGIONID,DMDZID,DMDZID,PL/SQL procedure successfully completed不是编译的错,估计是RESULT VARCHAR2(255);太小,超出长度了
      

  2.   

    找到原因了,dbms_output.put_line只能显示255长度的字符串???