2012-04-05 7 views
-1

Ich habe folgende Anforderung:Wie der Spalt Wert in Newline in Oracle 10g Get

Emp Tabelle hat folgende 3 columns,

Id , Name and programming

Id Name Programming 
-- ---- --------------- 
1 Raju Java,Plsql,sql 
2 Kamal C,C++,Java 
------------------------- 

ich die folgende Ausgabe benötigen, wie gezeigt unten:

Id  Name     Programming 
-------------------------------------------- 
1   Raju      Java 
            plsql 
            sql 
2   kamal      c 
            c++ 
            Java. <code> 
------------------------------------------------   

Die Id ist 1 und die Name ist Raja dann die Programmierung Java ist, in der nächsten Zeile sollte es not für programming jeden value for id and Name aber da sein sollte PLSQL und in der nächsten Zeile werden auch keinen Wert gleich.

Für Id und Name dann für die Programmierung sollte es Sql sein.

Kann mir jemand den Code vorschlagen, um das obige Format zu bekommen? Vielen Dank im Voraus.

Antwort

0

eine Funktion verwendet eine Sammlung aus dem Koma getrennten Zeichenfolge zu erzeugen:

1) Erstellen den Typs;

CREATE OR REPLACE TYPE "TNA_STRMANIPTYPE" as table of varchar2(4000) 
/

2)

CREATE OR REPLACE function str_manipulation 
    (p_str in varchar2, 
    p_delim in varchar2 default ',') 
    return tna_strManipType 
    AS 
    v_str long default p_str || p_delim; 
    v_n number; 
    v_data tna_strManipType := tna_strManipType(); 
    BEGIN 
     LOOP 
      v_n := instr(v_str, p_delim); 
      exit when (nvl(v_n,0) = 0); 
      v_data.extend; 
      v_data(v_data.count) := ltrim(rtrim(substr(v_str,1,v_n-1))); 
      v_str := substr(v_str, v_n+1); 
     END LOOP; 
     RETURN v_data; 
END; 

Sie Jetzt können Sie diese Sammlung als Tabelle verwenden:

SELECT column_value 
    FROM TABLE(str_manipulation('Java,Plsql,sql')) 

und diese Funktion verwenden und es zu einem Tisch Gießen, müssen Sie behandeln der Rest des Einsatzteils für Ihre Bedürfnisse :)

Verwandte Themen