Mit WMSYS.WM_CONCAT mit Oracle XE 10g
Wenn ich versuche, mit WMSYS.WM_CONCAT mit Oracle XE 10g, erhalte ich einen Kompilierungsfehler: ORA-00904: "WMSYS"."WM_CONCAT": invalid identifier
. Kann jemand überprüfen, dass diese tatsächlich aufgrund XE fehlt dieser (undokumentierte) Funktion? Wenn dem so ist, ist es sowieso zu aktivieren, die es im XE?
InformationsquelleAutor Stephen Swensen | 2010-08-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich ein paar Referenz-Seiten, aber hatte kein Glück ermöglicht. Landete ich Schreibe meine eigene Funktion zum behandeln der Verkettung.
Dann kann man
SELECT distinct CONCAT_LIST(CURSOR(SELECT id FROM test_table1), ',') test_table1 FROM dual
Das ist ziemlich glatt. Ich habe ein paar große Abfragen, dass ich diese Funktion. Sobald ich wieder im Büro erstelle ich die neue ein und überprüfen Sie die Leistung. Das hat mich neugierig gemacht. Danke!
Cool, ich würde gerne hören, Ihre performance-Ergebnisse, wenn du fertig bist.
Ich habe einige Tests über beide Funktionen, CONCAT_LIST und STRING_AGG gefunden und ich musste, um eine änderung zu meiner Funktion. Ich habe vergessen zu schließen, den cursor und ich das Maximum der erlaubten Menge ziemlich schnell. Nach der änderung habe ich eine Abfrage erstellt, die gruppiert eine Reihe von 250 Geschäfte auf Ihren entsprechenden Typ. Die CONCAT_LIST abgeschlossen 2.68 Sekunden und die STRING_AGG von oracle-Basis abgeschlossen 0,38 Sekunden und sieht viel sauberer aus. Ich verändert habe einige Fragen, die ich hatte, um auf diese neue Funktion. Hier dachte ich, ich könnte Ihnen helfen und Sie endete mir zu helfen. DANKE!
Hehe, hört sich toll an, du bist willkommen!
InformationsquelleAutor RandyB
Quelle: link.
Erstellen Sie einfach diese Funktion mit sich:
InformationsquelleAutor smnbbrv
Es wird empfohlen, nicht zu verwenden WM_CONCAT, da es ein nicht dokumentiertes feature, und es hat gewesen entfernt von 12c-version. Sehen Warum nicht WM_CONCAT-Funktion in Oracle?
Wenn Sie auf 11gR2 und Sie LISTAGG.
Version vor 11g wo
LISTAGG
wird nicht unterstützt, könnten Sie ROW_NUMBER() und SYS_CONNECT_BY_PATH Funktionen.Beispielsweise
InformationsquelleAutor Lalit Kumar B