Extrahieren bestimmter Wert von CLOB (mit XML) während der Erstellung einer getrennten string pro Zeile einer Tabelle. CLOB-Wert kann null sein, auf die einige Zeilen

Etwas Kontext:
Die DB ist Oracle. Ich bin versucht, erstellen Sie eine durch Trennzeichen getrennte Zeichenfolge pro Zeile einer Tabelle. Einige der Werte, die von der durch Trennzeichen getrennte Zeichenfolge muss von CLOBs (mit XML). Die CLOBs kann null sein, auf einige Zeilen und das ist, wo das Problem liegt.

Zum Beispiel, ich habe eine Tabelle: "Artikel" mit den folgenden Zeilen: 'Item_ID', 'Item_CD', 'Item_TXT' (CLOB). Der Tisch hat zwei Zeilen. Eine Zeile hat das folgende XML gespeichert 'Item_TXT', die andere Zeile ist 'Item_TXT' ist null.

<OuterTag>      
    <InnerTag>test</InnerTag>   
</OuterTag>     

Habe ich die folgende SQL-Rückkehr in den ersten 3 Elemente von der durch Trennzeichen getrennte Zeichenfolge:

SELECT 'Item%#'|| Item_ID ||'%#'|| Item_STAT_CD 
FROM Item; 

Diese erfolgreich gearbeitet:

Element%#12345%#A

Element%#123456%#A

Habe ich dann versucht, um das 4. element (Wert von CLOB).

SELECT 'Item%#'|| Item_ID ||'%#'|| Item_STAT_CD
EXTRACT(XMLTYPE(Item_TXT), '//OuterTag/InnerTag/text()').getStringVal()
FROM Item; 

Diese fehlgeschlagen mit folgendem Fehler:

ORA-06502: PL/SQL: numeric or value error
ORA-06512: at "SYS.XMLTYPE", line 272
ORA-06512: at line 1

Ich habe verengt das Thema auf, um manchmal die Item_TXT null ist und XMLTYPE() nicht damit umgehen. Um dies zu beweisen, lief ich die folgenden:

SELECT 'Item%#'|| Item_ID ||'%#'|| Item_STAT_CD
EXTRACT(XMLTYPE(Item_TXT), '//OuterTag/InnerTag/text()').getStringVal()
FROM Item
WHERE Item_TXT IS NOT NULL; 

Diese erfolgreich gearbeitet:

Element%#12345%#A%#test

Gibt es eine Möglichkeit der Verarbeitung der gesamten Tabelle extrahieren Wert aus clob, wenn verfügbar, sonst das hinzufügen von null/nichts, um getrennte Zeichenfolge?

Schreibe einen Kommentar