oralce存储过程中编写split函数

创建split的函数
create or replace package body test_common is
FUNCTION SPLIT(
in_str in varchar2,
in_fengefu in varchar2 DEFAULT(’,’)
)RETURN return_result
IS
j NUMBER := 0;
I NUMBER :=1;
len NUMBER :=0;
len NUMBER :=0;
str varchar2(1000);
split_result return_result := return_result();
BEGIN
len := LENGTH(s_str);
len1 := LENGTH(in_fengefu );
WHILE j < len LOOP
j := INSTR(in_str, in_fengefu ,i);
IF j = 0 THEN
j := len;
str := SUBSTR(in_str,i);
split_result.EXTEND;
split_result(split_result.COUNT) := str;
IF i >= len THEN
EXIT;
END IF;
ELSE
str := SUBSTR(in_str, i, j-i);
i := j + len1;
split_result.EXTEND;
split_result(split_result.COUNT) := str;
END IF;
END LOOP;
RETURN split_result;
END SPLIT; --split函数结束
–通过名称删除部门
PROCEDURE delete_dept_byname(
in_name in varchar2;
)
v_names return_result ;
DEGIN
if in_name is not null then
v_names := test_common.SPLIT(in_name, ‘,’); --把传入的name以逗号分割
FOR i IN 1 … v_names.count LOOP
delete from t_department where name = v_names(i);
END LOOP;
end if;
END delete_dept_byname;

end test_common;
注意事项:return_result为type类型,需要先创建,如下:
create or replace TYPE return_result IS TABLE OF VARCHAR2(3000);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值