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) 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值