Получить тип поля данных в инструкции 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 и вы получите хороший вид столбца и их типов данных.