最近技術總結

kiswind發表於2012-04-05

一、PL/SQL下明文顯示CLOB大欄位內容
select dbms_lob.substr(t.欄位名) from 表名 t;


二、 to_char ,dbms_lob.substr的區別

資料1.to_cahr對也可以對lob欄位進行轉換。但是如果超過4000字元則會出現錯誤,
說資料緩衝類似的話語提示的錯誤.但DBMS_LOB.substr則不會,
即使有也可以用dbms_lob.substr(p.brief,0,2000)||dbms_lob.substr(p.brief,2000,4000)似類的東西形式代替。

2.我們常常在網頁上進行編輯、排版一些文章。
這些文章儲存到資料庫裡時會帶有一些html的東西。當我們匯出來的時候 ,
想要去掉裡HTML程式碼。這時候要看HTML程式碼是否則標準,如果標準的話,
可以有REGEXP_REPLACE,來替換。這是正規表示式替換。關於REGEXP還有好多。
命令很多,如查詢中什麼的。
regexp_replace(regexp_replace( regexp_replace( DBMS_LOB.substr(p.description), ']+>', ''), '[ ]+','' ), chr(10)||chr(10), '')
chr(10)這是換行的意思。在plsql裡是不認識 rn這樣的回車

三 pl/XML程式內防止不明字元,並且替換後能正確顯示

FUNCTION transform_xml_entity(p_value IN VARCHAR2) RETURN VARCHAR2 IS
l_value VARCHAR2(2000);
BEGIN
l_value := p_value;
l_value := REPLACE(l_value, 'l_value := REPLACE(l_value, '>', '>');
l_value := REPLACE(l_value, '&', '&');
l_value := REPLACE(l_value, '''', ''');
l_value := REPLACE(l_value, '"', '"');
l_value := REPLACE(l_value, ' ', ' ');

RETURN l_value;
END transform_xml_entity;

四、Error: PLS-00123: 程式太大解決辦法
在sqlplus內執行
alter package 包 compile;
看來這是第三方工具pl/sql developer的bug。如果用命令:alter function xxx compile或Oracle 的sql developer進行得新編譯同樣會成功。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/394664/viewspace-1057825/,如需轉載,請註明出處,否則將追究法律責任。

相關文章