Если вы заинтересованы в приведении отдельных столбцов к строкам, проще всего написать пакет с перегруженными функциями.Каждая функция имеет одинаковое имя, меняется только сигнатура входных параметров:
SQL> create or replace package str_util
2 as
3 function s (p in varchar2) return varchar2;
4 function s (p in number) return varchar2;
5 function s (p in date, fmt in varchar2 := 'dd-mon-yyyy') return varchar2;
6 end;
7 /
Package created.
SQL>
Это, очевидно, упрощенная реализация.Для производства вам может потребоваться обработка ошибок, маски числового формата, дополнительные типы данных и т. П.* В этой версии запроса я вызываю упакованную функцию и возвращаю три строки:
SQL> select dump(str_util.s(id)) id_is_number
2 , dump(str_util.s(col2)) col2_is_varchar
3 , dump(str_util.s(col3)) col3_is_date
4 from big_table
5 where rownum = 1
6 /
ID_IS_NUMBER
------------------------------------------------------------------
COL2_IS_VARCHAR
------------------------------------------------------------------
COL3_IS_DATE
------------------------------------------------------------------
Typ=1 Len=3: 52,51,54
Typ=1 Len=11: 73,95,65,82,71,85,77,69,78,84,49
Typ=1 Len=11: 49,53,45,111,99,116,45,50,48,48,55
SQL>