Получить тип поля данных в инструкции select в ORACLE

могу ли я получить типы данных каждого выбранного столбца вместо значений, используя инструкцию select?

НАПРИМЕР:

SELECT a.name, a.surname, b.ordernum 
FROM customer a
JOIN orders b
ON a.id = b.id

и результат должен быть такой

name    | NVARCHAR(100)
surname | NVARCHAR(100)
ordernum| INTEGER

или это может быть в строке, как это, это не важно:

name           |   surname     |  ordernum
NVARCHAR(100)  | NVARCHAR(100) |   INTEGER

спасибо

6 ответов


Вы можете запросить all_tab_columns посмотреть в базе данных.

SELECT  table_name, column_name, data_type, data_length FROM all_tab_columns where table_name = 'CUSTOMER'

Я нахожу не интуитивный способ сделать это с помощью DUMP ()

SELECT DUMP(a.name), DUMP(a.surname), DUMP(b.ordernum)
FROM customer a
JOIN orders b
ON a.id = b.id

он вернет что-то вроде: Typ=1 Len=2: 0,48 для каждого столбца

Type=1 означает VARCHAR2 или NVARCHAR2
Type=2 означает NUMBER/FLOAT
Type=12 означает DATE
and many ..
вы можете обратиться к Oracle doc для этих Код Типа Данных
также это с более подробной информацией Тип Oracle Код Сопоставления


Я попал в ту же ситуацию. В качестве обходного пути я только что создал view (Если у вас есть привилегии) и описал его и отбросил позже. :)


Если у вас нет прав для создания представления в Oracle, "взломать" вокруг него, чтобы использовать MS Access : - (

в MS Access создайте сквозной запрос с помощью sql (но добавьте предложение where, чтобы просто выбрать 1 запись), создайте запрос select из представления (очень важно), выбрав all*, затем создайте таблицу make из запроса select. При этом будет создана таблица с одной записью, все типы данных должны "соответствовать" oracle. т. е. Passthrough --> выберите --> MakeTable --> Таблица

Я уверен, что есть другие лучшие способы, но если у вас есть ограниченные инструменты и привилегии, это будет работать.


обычно я создаю представление и использую команду "desc":

CREATE tmp_view as SELECT a.name, a.surname, b.ordernum FROM customer a JOIN orders b ON a.id = b.id

затем команда "DESC" покажет тип каждого поля.

DESC tmp_view


кроме того, если у вас есть жаба для Oracle, вы можете выделить заявление и нажать CTRL + F9 и вы получите хороший вид столбца и их типов данных.