Wednesday, August 13, 2008

Comma seperated columns

DECLARE
   vl_n_counter NUMBER := 0;

   vl_n_itrncntr NUMBER := 1

   vl_c_colrecord cols.column_name%TYPE;
CURSOR cur_col
IS
   SELECT column_name
   FROM cols
   WHERE table_name = 'EMP;
BEGIN
   OPEN cur_col;

   LOOP
   FETCH cur_col
   INTO vl_c_colrecord;

   EXIT WHEN cur_col%NOTFOUND;
   vl_n_counter := cur_col%ROWCOUNT;
   END LOOP;

   CLOSE cur_col;

       DBMS_OUTPUT.put_line ('(');
   vl_n_itrncntr := 1;

   FOR rec_col IN cur_col
   LOOP
      IF vl_n_itrncntr = vl_n_counter
      THEN
          DBMS_OUTPUT.put_line (rec_col.column_name);
      ELSE
         DBMS_OUTPUT.put_line (rec_col.column_name ',');
      END IF;

      vl_n_itrncntr := vl_n_itrncntr + 1;
   END LOOP;

      DBMS_OUTPUT.put_line (')');
END;



Method 2nd using V arrays

DECLARE
TYPE vl_t_columnlist IS VARRAY (100) OF VARCHAR2 (50);

vl_c_listcol vl_t_columnlist;
BEGIN
SELECT column_name
BULK COLLECT INTO vl_c_listcol
FROM cols
WHERE table_name = 'EMP';

FOR i IN vl_c_listcol.FIRST .. vl_c_listcol.LAST
LOOP
IF i = vl_c_listcol.COUNT
THEN
DBMS_OUTPUT.put_line (vl_c_listcol (i));
ELSE
DBMS_OUTPUT.put_line (vl_c_listcol (i) ',');
END IF;
END LOOP;

DBMS_OUTPUT.put_line (')');
END;


No comments: