Получить тип данных поля в предложении 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

Спасибо

Ответ 1

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

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

Ответ 2

Я нашел не очень интуитивно понятный способ сделать это с помощью 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 и т.д.

Вы можете обратиться к этому документу оракула для информации Код Типа данных
или это для простого отображения Oracle Type Code Mappings

Ответ 3

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

Ответ 4

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

CREATE VIEW 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

Ответ 5

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

В MS Access создайте проход через запрос с вашим sql (но добавьте предложение where, чтобы просто выбрать 1 запись), создайте запрос выбора из представления (очень важно), выбирая все *, а затем создайте таблицу make из выберите запрос. Когда это произойдет, создается таблица с одной записью, все типы данных должны "совпадать" с оракулом. то есть Passthrough → Select → MakeTable → Table

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

Ответ 6

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