Вы можете использовать DESCRIBE_COLUMNS Процедура пакета DBMS_SQL
Вот критические шаги: открыть курсор, разобрать его и выполнить. Наконец, вызовите describe_columns
, который возвращает определение в DBMS_SQL.DESC_TAB
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, q'[SELECT 'x' col1, sysdate col2, 1 col3 FROM dual]', DBMS_SQL.NATIVE);
d := DBMS_SQL.EXECUTE(c);
DBMS_SQL.DESCRIBE_COLUMNS(c, col_cnt, rec_tab);
Пример вывода для первого столбца вышеприведенного запроса:
col_type = 96
col_maxlen = 1
col_name = COL1
col_name_len = 4
col_schema_name =
col_schema_name_len = 0
col_precision = 0
col_scale = 0
col_null_ok = true
Полный пример см. В Документация Oracle
В качестве альтернативы вы можете использовать метод JDBC resultSet.getMetaData()
.