Oracle中使用Split函數

--定義數組類型
Type t_Array Is Varray(2000) Of Varchar2(4000);
v_Varray t_Array;

--將字符串轉換成爲數組 --數組解析函數摘的,不應該每個字符遍歷,只作啓示
Function f_Splitstr(Str In Varchar2, Separator In Varchar2) Return t_Array;

--返回數組
Function f_Splitstr(Str In Varchar2, Separator In Varchar2) Return t_Array Is
Len Number;
Currentnum Number;
Currentindex Number;
Strs t_Array;
Ichar Number;
Begin
Len := Length(Str);
Currentnum := 1;
Currentindex := 1;
Strs := t_Array();
For i In 1 .. Len Loop
If Substr(Str, i, 1) = Separator Then ××××××××
Strs.Extend(1);
Strs(Currentindex) := Substr(Str, Currentnum, i - Currentnum);
Currentindex := Currentindex + 1;
Currentnum := i + 1;
End If;
Ichar := i;
End Loop;

Strs.Extend(1);
If Currentindex = 1 Then
Strs(1) := Str;
Else
Strs(Currentindex) := Substr(Str, Currentnum, Ichar - Currentnum + 1);
End If;

Return Strs;
End f_Splitstr;


方法中使用數組

Str_Varray t_Array;
Str_Varray := f_Splitstr(p_xianlu_id, ',');
For y In 1 .. Str_Varray.Count Loop
select * from table1 where aa=Str_Varray(y)
end loop;
動態執行sql語句

v_sqlstr :='delete from table1';
execute immediate v_sqlstr;

批量更新

UPDATE table T1 SET
(T1.aa,T1.ab)=
(SELECT T2.ca,T2.cb
FROM table2 T2
WHERE T2.ca='aaa' and T2.aa_id=t1.aa_id)
where exists
(select 1 from table2 T2 where t2.aa_id=t1.aa_id) 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章