21 Stimmen

Wie SELECT von Objekttyp-Spalte in Oracle 11g?

Hy Jungs, Ich habe folgende zwei Oracle-Objekte:

CREATE OR REPLACE TYPE car AS OBJECT( 
name VARCHAR( 80 ) 
) NOT FINAL;

Und es gibt noch ein weiteres Objekt:

CREATE OR REPLACE TYPE truck UNDER car ( 
doors NUMBER,
seats NUMBER 
);

Es gibt auch die folgende Tabelle:

CREATE TABLE vehicles (
id NUMBER NOT NULL,
vehicle car,
PRIMARY KEY (id)
);

Hier sind einige Daten:

INSERT INTO vehicles ( id, vehicle ) VALUES ( 1, truck( 'ford', 4, 4 ) );
INSERT INTO vehicles ( id, vehicle ) VALUES ( 2, truck( 'toyota', 4, 5 ) );

Abschließend möchte ich noch eine Frage stellen: Wie wähle ich nur die Anzahl der Türen und die Anzahl der Sitze aus der Spalte der Fahrzeugtabelle aus?

Ich habe Folgendes versucht, aber es funktioniert nicht:

SELECT v.vehicle.doors AS doors AS seats FROM vehicles v;

Ich habe folgenden Fehler:

ORA-00904: "V"."VEHICLE"."DOORS": invalid identifier

Der einzige Parameter, den ich ohne Fehler erhalten kann, ist der vom Auto-Objekt.

Zu Ihrer Information: Ich verwende Oracle 11g auf CentOS 6.2

Zum Wohl, Bojan

50voto

Sie müssen die Funktion TREAT verwenden, um die Datenbankmaschine dazu zu bringen, VEHICLE als TRUCK zu behandeln, wie in:

SELECT ID, TREAT(vehicle AS TRUCK).DOORS FROM VEHICLES

Teilen und genießen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X