plsql - Dynamic String contcatination in Cursor -


i have function concatinates value cursor. concatinates 4 columns , column name should hardcoded. there way have generic solution this, such if pass cursor automatically concatinate data regardless of column name , number of columns in 11g.

function generatedata(p_datacursor in sys_refcursor) return varchar2 -- --------------------------------------------------------------------- crlf         varchar2(2)  := chr(13)||chr(10); lv_message     varchar2(32000); begin   rec in p_datacursor   loop       lv_message := lv_message || rec.a||','||rec.b||','||rec.c||','||rec.d || crlf;    end loop; return lv_message; end; 

since 11g oracle built-in package dbms_sql provides function to_cursor_number - "this function takes opened or weakly-typed ref cursor , transforms dbms_sql cursor number."

example code:

declare l_cursor sys_refcursor; function generatedata(p_datacursor in sys_refcursor) return varchar2   curs sys_refcursor := p_datacursor;   l_cursorid number;   l_column_count integer;   l_describe_table dbms_sql.desc_tab;   l_numvar number;   l_ignore integer;   l_value varchar2(2000);   l_coma varchar2(10);   crlf         varchar2(2)  := chr(13)||chr(10);   lv_message     varchar2(32000); begin    l_cursorid := dbms_sql.to_cursor_number( curs );    dbms_sql.describe_columns( l_cursorid, l_column_count, l_describe_table );    in 1..l_column_count loop     dbms_sql.define_column(l_cursorid, i, l_value, 2000);   end loop;    loop      if dbms_sql.fetch_rows(l_cursorid)>0        l_coma := '';       in 1..l_column_count loop         dbms_sql.column_value(l_cursorid, i, l_value);         lv_message := lv_message || l_coma || l_value;         l_coma := ',';       end loop;       lv_message := lv_message || crlf;     else       exit;     end if;   end loop;   dbms_sql.close_cursor( l_cursorid );   return lv_message; end; begin   open l_cursor 'select 1 a, 2 b, 3 c, 4 d dual union select 1 a, 2 b, 3 c, 4 d dual';   dbms_output.put_line(generatedata(l_cursor)); end; / 

Comments

Popular posts from this blog

basic authentication with http post params android -

vb.net - Virtual Keyboard commands -

css - Firefox for ubuntu renders wrong colors -