我已經在pl/sql中編寫了一個自定義函數,它根據提供的分隔符將clob變量拆分爲一組字符串,但它不能按預期工作,請幫助我用代碼來解決問題。自定義拆分功能不能在pl/sql中工作
create or replace
FUNCTION SPLITCLOB (p_in_string clob, p_delim VARCHAR2) RETURN t_array
IS
i number :=0;
pos number :=0;
lv_str clob := p_in_string;
Strings t_array:=t_array();
Begin
-- determine first chuck of string
pos := DBMS_LOB.INSTR(lv_str,p_delim,1,1);
If (pos = 0) Then
i := i + 1;
strings.Extend();
strings(i) := DBMS_LOB.SUBSTR(lv_str,1);
RETURN strings;
End If;
-- while there are chunks left, loop
WHILE (pos != 0) LOOP
-- increment counter
i := i + 1;
-- create array element for chuck of string
strings.EXTEND();
strings(i) := DBMS_LOB.SUBSTR(lv_str,1,pos-1);
-- remove chunk from string
lv_str := DBMS_LOB.SUBSTR(lv_str,pos+1,dbms_lob.getLength(lv_str));
-- determine next chunk
pos := DBMS_LOB.INSTR(lv_str,p_delim,1,1);
-- no last chunk, add to array
IF pos = 0 THEN
strings.extend();
strings(i+1) := lv_str;
END IF;
End Loop;
-- return array
RETURN strings;
End Splitclob;
這裏t_array()
是自定義類型defiition其中在預先設置
create or replace
TYPE "T_ARRAY"
AS TABLE OF VARCHAR2(500);
感謝以下
代碼有什麼問題? 你有什麼試圖解決它? 您嘗試從中提取數據的CLOB的內容是什麼? – Rene
有一張表,其中有一個名爲description的列,其中clob作爲內容,基本上它包含我們用於分析的應用程序的audit_logs。在表中的描述是種類「order_id = 383325; order_line_item = 59; order_class_id = 5749; subscription_code = 5U12PFNCAU; start_date = 01/12/2012; end_date = 30/11/2013; date_override = null; license_available = -1; license_consumed = 1; license_override = -1; order_class_status = 0「 – Abhi
我們試圖通過提供分隔符來獲取各種值」;「 。 – Abhi