2014-04-09 3 views
11

Kann ich Datentypen jeder ausgewählten Spalte anstelle der Werte abrufen, indem ich eine SELECT-Anweisung verwende?Datentyp des Felds in SELECT-Anweisung in ORACLE abrufen

BEISPIEL:

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

und Ergebnis wie dieses

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

oder es kann wie diese in Reihe sein, ist es nicht wichtig:

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

Dank

+0

verwenden 'desc table_name' – user3470953

Antwort

8

Sie können das abfragen all_tab_columns Ansicht in der Datenbank.

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

Ja, aber das funktioniert nicht für eine Abfrage wie folgt: 'SELECT a.name, a.name, TO_CHAR (b.ordernum) als ordernum_char'. Dazu müssen Sie das Paket DBMS_SQL verwenden und explizite Cursor verwenden. –

+1

@WernfriedDomscheit Ein konkretes Beispiel wäre willkommen. – zeodtr

1

Ich kam in die gleiche Situation. Als eine Umgehungslösung habe ich gerade eine view (Wenn Sie Berechtigungen haben) erstellt und beschrieben und später gelöscht. :)

+0

#NiceIdea Das ist, was ich brauchte –

3

Ich finde eine nicht intuitive Art und Weise dieser Absteige unter Verwendung zu tun()

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

es wird wieder so etwas wie: Typ=1 Len=2: 0,48 für jede Spalte

Type=1 bedeutet VARCHAR2 oder NVARCHAR2
Type=2 bedeutet NUMBER/FLOAT
Type=12 bedeutet DATE
and many ..
Sie dem Oracle-doc für diese Datatype Code
auch diese mit detaillierter Oracle Type Code Mappings

0

ich in der Regel eine Ansicht erstellen und nutzen die "desc" Befehl beziehen :

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

Dann zeigt der Befehl "DESC" den Typ jedes Feldes an.

DESC tmp_view

0

Wenn Sie eine Ansicht in Oracle erstellen Sie keine Privilegien haben, ein "Hack" um es :-(

MS Access zu verwenden

In MS Access, erstellen Sie einen Pass Through-Abfrage mit Ihr sql (aber where-Klausel hinzufügen, um nur 1 Datensatz auszuwählen), erstellen Sie eine Select-Abfrage aus der Ansicht (sehr wichtig), wählen Sie alle *, dann erstellen Sie eine make-Tabelle aus der Select-Abfrage.Wenn dies läuft wird eine Tabelle mit einem erstellen record, alle Datentypen sollten "oracle" übereinstimmen dh Passthrough -> Auswählen -> MakeTable -> Tabelle

Ich bin mir sicher, dass es andere bessere Möglichkeiten gibt, aber wenn Sie nur eingeschränkte Tools und Privilegien haben, wird dies funktionieren.

0

Auch wenn Sie Toad for Oracle haben, können Sie die Anweisung markieren und CTRL +F9 drücken und Sie haben eine schöne Aussicht auf Spalte und ihre Datentypen zu bekommen.

Verwandte Themen