2015年10月2日 星期五

java call oracle funtion

一般常用都是用 PreparedStatement 來處理 SQL...
不過如果要 Call procedure 或 function的話,就要用其他的寫法~
我這邊是用 CallableStatement 來處理

另外,看了一下網路資源,似乎不同家的DB,下法也不一樣~總之這邊用oracle的~

           Connection conn = getDataSource().getConnection();
           
            CallableStatement cs = null;
            String callsql = "{? = call FN_XXXXX(?,?) }";
            cs = conn.prepareCall(callsql);
            cs.registerOutParameter(1, java.sql.Types.VARCHAR);
            cs.setString(2, "AAA");
            cs.setString(3, "BBB");
            cs.execute();

            re = cstamt.getString(1);

總之就是output取值,要用 registerOutParameter 來放,執行後再取值出來~

在oracle裡面,似乎將這些東西分得很多類  function/package/procedure....
但是雖然我覺得都是差不多的東西阿一u一a...好啦~有的是整包,有的是單一功能~等等~
java來 call,寫法都差不多,會差在 語法怎麼下的差別就是~

(但是最難的還是去擠出那個DB Function的語法,sql語法很難debug阿阿阿阿阿~)

沒有留言: