Puis-je obtenir les types de données de chaque colonne que j'ai sélectionnée au lieu des valeurs, à l'aide d'une instruction select?
PAR EXEMPLE:
SELECT a.name, a.surname, b.ordernum
FROM customer a
JOIN orders b
ON a.id = b.id
et le résultat devrait être comme ça
name | NVARCHAR(100)
surname | NVARCHAR(100)
ordernum| INTEGER
ou cela peut être en ligne comme ça, ce n’est pas important:
name | surname | ordernum
NVARCHAR(100) | NVARCHAR(100) | INTEGER
Merci
Vous pouvez interroger la vue all_tab_columns
dans la base de données.
SELECT table_name, column_name, data_type, data_length FROM all_tab_columns where table_name = 'CUSTOMER'
J'ai trouvé un moyen pas très intuitif de faire cela en utilisant DUMP()
SELECT DUMP(A.NAME),
DUMP(A.surname),
DUMP(B.ordernum)
FROM customer A
JOIN orders B
ON A.id = B.id
Il retournera quelque chose comme:
'Typ=1 Len=2: 0,48'
pour chaque colonne.
Type=1
signifie VARCHAR2/NVARCHAR2
Type=2
signifie NUMBER/FLOAT
Type=12
signifie DATE
, etc.
Vous pouvez vous référer à ce document Oracle pour plus d'informations Code de type de données
ou ceci pour un mappage simple Mappages de type de type Oracle
Je suis entré dans la même situation. En guise de solution de contournement, je viens de créer une view
(si vous avez des privilèges), de la décrire et de la supprimer plus tard. :)
Je crée généralement une vue et utilise la commande DESC
:
CREATE VIEW tmp_view AS
SELECT
a.name
, a.surname
, b.ordernum
FROM customer a
JOIN orders b
ON a.id = b.id
Ensuite, la commande DESC
montrera le type de chaque champ.
DESC tmp_view
Si vous n'avez pas les privilèges pour créer une vue dans Oracle, faites un "piratage" pour utiliser MS Access :-(
Dans MS Access, créez une requête directe avec votre SQL (mais ajoutez la clause where pour ne sélectionner qu'un seul enregistrement), créez une requête de sélection dans la vue (très important), sélectionnez all *, puis créez une table de création à partir de la requête de sélection. Lorsque cela fonctionne, il crée une table avec un enregistrement, tous les types de données doivent "correspondre" à Oracle . I.e. Passthrough -> Choisir -> MakeTable -> Table
Je suis sûr qu'il existe d'autres moyens plus efficaces, mais si vous avez des outils et des privilèges limités, cela fonctionnera.
De plus, si vous avez Toad for Oracle, vous pouvez surligner la déclaration et appuyer sur CTRL + F9 et vous aurez une belle vue de la colonne et de leurs types de données.