2012-03-29 4 views
1

Ich möchte mit JDBC SQL-Funktion erstellenWie erstellt man eine SQL-Funktion mit JDBC?

CREATE OR REPLACE FUNCTION TEST."TO_STRING"(
nt_in in ntt_varchar2, 
delimiter_in IN VARCHAR2 DEFAULT ',') 
return varchar2 is 
v_idx PLS_INTEGER; 
v_str varchar2(32767); 
v_dlm VARCHAR2(10); 
v_length NUMBER; 
v_max_size NUMBER; 
begin 
v_dlm := delimiter_in; 
v_idx := nt_in.FIRST; 

v_max_size :=2000; 
WHILE v_idx IS NOT NULL LOOP 
    IF (nvl(length(v_str),0) + length(v_dlm) + length(nt_in(v_idx))) > v_max_size THEN 
    if v_str is null then 
     v_str := substr(nt_in(v_idx), 0, v_max_size); 
    else 
     v_str := v_str || v_dlm || substr(nt_in(v_idx), 0, v_max_size - length(v_str) - length(v_dlm)); 
    end if; 
    EXIT; 
    END IF; 
    IF (v_str is not null and length(v_str) > 0) THEN 
    v_str := v_str || v_dlm || nt_in(v_idx); 
    ELSE 
    v_str := nt_in(v_idx); 
    END IF; 
    v_idx := nt_in.NEXT(v_idx); 
END LOOP; 
RETURN v_str; 
end to_string 

, sondern erhalten ORA-00900: ungültige SQL-Anweisung

Ist es möglich, SQL-Funktion mit JDBC zu erstellen? Ich benutze Oracle Database 11g Version 11.1.0.0.0

+0

können Sie Ihre Funktion wie angezeigt durch eine andere Schnittstelle hinzufügen? Ist dieses Problem spezifisch für jdbc oder für Ihre Funktion? – ControlAltDel

+0

Thru Toad Ich führe diesen Code ohne Probleme. Und diese Funktion run –

Antwort

3

Was ist falsch daran?

String sql = "CREATE OR REPLACE FUNCTION TEST.\"TO_STRING\"(......"; 
connection.createStatement().execute(sql); 

Natürlich muss Ihre SQL immer noch korrekt sein. Sie vermissen tatsächlich ein Semikolon in der letzten Zeile:

end to_string; 
+0

JDBC akzeptiert nicht den Code nach dem ersten Semikolon –

+0

@ ІгарЦімошка: Es funktionierte für mich mit ojdbc6 ... –

+0

Es tut mir leid wild)), das ist mein Fehler, alle arbeiten –

Verwandte Themen