| drop table serialized_data;    create table serialized_data    (      tablename varchar2(30) not null,      row_id rowid not null,      colseq integer not null,      item anydata    );    create or replace procedure serialize(p_tablename varchar2)    is      l_tablename varchar2(30) := upper(p_tablename);      c      pls_integer;    -- cursor      x      pls_integer;    -- dummy      col_cnt   pls_integer;      dtab    dbms_sql.desc_tab;      l_rowid   char(18);      l_anydata  anydata;      l_vc2    varchar2(32767);      l_number  number;      l_vc    varchar(32767);      l_date   date;      l_raw    raw(32767);      l_ch    char;      l_clob   clob;      l_blob   blob;      l_bfile   bfile;    begin      c := dbms_sql.open_cursor;      dbms_sql.parse(c,'select rowid,'p_tablename'.* from 'p_tablename,        dbms_sql.native);      dbms_sql.describe_columns(c,col_cnt,dtab);      dbms_sql.define_column(c,1,l_rowid,18);      for i in 2 .. col_cnt loop        case dtab(i).col_type        when 1 then          dbms_sql.define_column(c,i,l_vc2,dtab(i).col_max_len);        when 2 then          dbms_sql.define_column(c,i,l_number);        when 9 then          dbms_sql.define_column(c,i,l_vc,dtab(i).col_max_len);        when 12 then          dbms_sql.define_column(c,i,l_date);        when 23 then          dbms_sql.define_column_raw(c,i,l_raw,dtab(i).col_max_len);        when 96 then          dbms_sql.define_column_char(c,i,l_ch,dtab(i).col_max_len);        when 112 then          dbms_sql.define_column(c,i,l_clob);        when 113 then          dbms_sql.define_column(c,i,l_blob);        when 114 then          dbms_sql.define_column(c,i,l_bfile);        end case;      end loop;      x := dbms_sql.execute(c);      while dbms_sql.fetch_rows(c) != 0 loop        dbms_sql.column_value(c,1,l_rowid);        for i in 2 .. col_cnt loop          case dtab(i).col_type          when 1 then            dbms_sql.column_value(c,i,l_vc2);            l_anydata := ANYDATA.ConvertVarchar2(l_vc2);          when 2 then            dbms_sql.column_value(c,i,l_number);            l_anydata := ANYDATA.ConvertNumber(l_number);          when 9 then            dbms_sql.column_value(c,i,l_vc);            l_anydata := ANYDATA.ConvertVarchar(l_vc);          when 12 then            dbms_sql.column_value(c,i,l_date);            l_anydata := ANYDATA.ConvertDate(l_date);          when 23 then            dbms_sql.column_value(c,i,l_raw);            l_anydata := ANYDATA.ConvertRaw(l_raw);          when 96 then            dbms_sql.column_value(c,i,l_ch);            l_anydata := ANYDATA.ConvertChar(l_ch);          when 112 then            dbms_sql.column_value(c,i,l_clob);            l_anydata := ANYDATA.ConvertClob(l_clob);          when 113 then            dbms_sql.column_value(c,i,l_blob);            l_anydata := ANYDATA.ConvertBlob(l_blob);          when 114 then            dbms_sql.column_value(c,i,l_bfile);            l_anydata := ANYDATA.ConvertBFile(l_bfile);          end case;          insert into serialized_data (tablename,row_id,colseq,item)            values (l_tablename,l_rowid,i,l_anydata);        end loop;      end loop;      dbms_sql.close_cursor(c);    end;    /    show errors; |