Union verursacht eine ORA-01790: Ausdruck muss denselben Datentyp wie die korrespondierende Ausdruck
Durch die folgende Abfrage als Beispiel:
select p.product_id, p.product_name,
product_type as product_type,
from products
group by p.product_id, p.product_name
union
select p.product_id, p.product_name,
cast(collect(coalesce(product_type, decode(product_description,null,'DESCR' || '-' product_description) as my_type) as product_type,
from products
group by p.product_id, p.product_name
Die select-Anweisung in der ersten Abfrage gibt product_type als varchar und auf die zweite Abfrage product_type ist der Typ my_type.
Diese verursacht und ORA-01790: Ausdruck muss denselben Datentyp wie die korrespondierende Ausdruck, weil die Datentypen nicht gleich sind.
Ist es möglich zu casten product_type auf die erste Abfrage zu sein, der Typ my_type?
Ich versucht, die änderung der ersten Abfrage, wie unten dargestellt, aber ohne Glück.
select p.product_id, p.product_name,
cast(product_type as my_type) as product_type,
decode(product_source_location, null, 'NO_SOURCE', product_source_location)
from products
group by p.product_id, p.product_name
Bearbeiten
my_type ist definiert als 'TYPE "my_type" AS TABLE OF varchar2(4000)'
Ist es möglich? Was passiert, wenn du versucht? Wenn nicht, können Sie ausführen ein to_char auf die my_type Feld?
Wenn ich es versuchte, es gab mir ein [1]: ORA-00902: ungültige Datentyp-Fehler.
Was ist my_type?
my_type ist definiert als " TYP "my_type" AS TABLE OF varchar2(4000)'
Ich bezweifle, dass die erste WÄHLEN, ist korrekt, da weder
Wenn ich es versuchte, es gab mir ein [1]: ORA-00902: ungültige Datentyp-Fehler.
Was ist my_type?
my_type ist definiert als " TYP "my_type" AS TABLE OF varchar2(4000)'
Ich bezweifle, dass die erste WÄHLEN, ist korrekt, da weder
product_type
noch product_source_location
sind Teil der GRUPPE.InformationsquelleAutor ziggy | 2013-02-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, man kann nicht tun, solche casting in SQL. Aber in PL/SQL können Sie:
Ich glaube, ich war falsch in meinen Vermutungen oben. Ich nicht löschen, da es immer noch gültiges Beispiel. Beispiel unten Gießen vorhandene Tabelle Spalte (Tabelle emp) mit dem SAMMELN, als eine Art table_type:
Was ist, wenn man eine gespeicherte Prozedur?
Ich habe gerade korrigiert/Hinzugefügt, um meine Antwort.
Ihre casting-Beispiel ist genau das, was ich Tue, in der zweiten Abfrage auf die union. Das problem ist, dass man nicht dann union-Abfrage mit der Spalte, das gibt ein varchar. Ich habe versucht, die Umwandlung zu einem clob mit to_Clob aber die Daten-Typen sind inkonsistent.
Bitte posten Sie Ihre sample-Strukturen. Ich kann vielleicht Ihnen helfen, mehr. Versuchen UNION und group by. Sehen Sie bitte mein Beispiel.
InformationsquelleAutor Art