2012-03-29 4 views
1

나는 JDBC를 사용하여 SQL 함수를 만드는 방법은 무엇입니까?

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 

JDBC

와 SQL 함수를 만들 수 있지만 ORA-00900를 얻으려면 : 유효하지 않은 SQL 문

는 JDBC와 SQL 함수를 만들 수 있습니까? Oracle Database 11g Release 11.1.0.0.0을 사용합니다.

+0

다른 인터페이스를 통해 표시된대로 함수를 추가 할 수 있습니까? 이 문제는 jdbc 또는 함수에 특정한 것입니까? – ControlAltDel

+0

Thru Toad 문제없이이 코드를 실행합니다. 그리고이 함수는 –

답변

3

무엇이 좋지 않습니까?

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

물론 SQL은 정확해야합니다. 마지막 행에 세미콜론이 없습니다.

end to_string; 
+0

을 실행한다. JDBC는 첫 번째 세미콜론 뒤에 코드를 받아들이지 않는다. –

+0

@ odbdb6와 함께 나를 위해 일했다 ... –

+0

나는 크게 미안해)), 이것은 내 실수 다. –

관련 문제