Oracle 10g與11g中的一個函數wmsys.wm_concat 的不同返回值

wmsys.wm_concat的作用是將多行合并為一行,如一個人買了3只股票A,B,C 正常我們會記錄成三條數據,現在要以一條數據顯示該人的股票,這是wmsys.wm_concat方法就有用了。 但是,在oracle 10G中該方法返回值可直接轉為String后使用,但是在11G中卻是Clob類型,我們必

wmsys.wm_concat的作用是將多行合并為一行,如一個人買了3只股票A,B,C 正常我們會記錄成三條數據,現在要以一條數據顯示該人的股票,這是wmsys.wm_concat方法就有用了。

但是,在Oracle 10G中該方法返回值可直接轉為String后使用,但是在11G中卻是Clob類型,我們必須將clob轉為String 或其他類型后才可以使用。

/**

???? * 將CLOB轉成String ,靜態方法
???? * @param clob 字段
???? * @return 內容字串,如果出現錯誤,返回null
???? */
??? public final static String clob2String(Clob clob){
????? if (clob == null){
??????? return null;
????? }
????? StringBuffer sb = new StringBuffer(65535);//64K
????? Reader clobStream = null;//創建一個輸入流對象
????? try{
??????? clobStream = clob.getCharacterStream();
??????? char[] b = new char[60000];//每次獲取60K
??????? int i = 0;
??????? while((i = clobStream.read(b)) != -1){
????????? sb.append(b,0,i);
??????? }
????? }
????? catch(Exception ex){
??????? sb = null;
????? }
????? finally{
??????? try{
????????? if (clobStream != null)
??????????? clobStream.close();
??????? }
??????? catch (Exception e) {
??????? }
????? }
????? if (sb == null)
??????? return null;
????? else
??????? return sb.toString();
??? }

? 版權聲明
THE END
喜歡就支持一下吧
點贊12 分享