oracle数据库存储过程问题:
传入一个字符串(字符串格式如:“辣椒_食品,西红柿_食品,板鞋_服饰,植物油_食品,领带_食品,……”)
现在我想根据“,”来截断字符串存储到数组(其他变量也行)。然后就可以得到这样的数组string[] arr={“辣椒_食品”,“西红柿_食品”,……}
然后循环遍历这个数组,循环每条数据的时候再根据“_”来分割数据,分割完成后存储在两个变量中,在根据变量来执行update语句。
目的就是要把传入的字符串根据“,”分割,然后在根据“_”分割,分割后分别执行update语句,如:update 表 set 字段1=当前时间 where 字段2=根据“_”分割的前面一部分 and 字段2=根据“_”分割的后面一部分
已经测试通过,请自行优化
--构造数据
Create Table t (
a Varchar2(30),
b Varchar2(30),
c Date
);
Insert Into t Values('辣椒','食品',Null);
Commit;
--存储过程
Declare
str_tmp Varchar2(4000) := '辣椒_食品,西红柿_食品';--请自行封装成函数入参
CURSOR cur_emp Is
SELECT REGEXP_SUBSTR(str_tmp, '[^,]+', 1, ROWNUM,'i') str
FROM DUAL
CONNECT BY ROWNUM <=
LENGTH(str_tmp) -
LENGTH(Replace(str_tmp, ',',''))+1;
row_emp cur_emp%ROWTYPE;
col1 Varchar2(4000);
col2 Varchar2(4000);
Begin
OPEN cur_emp;
FETCH cur_emp INTO row_emp;
WHILE cur_emp%FOUND
LOOP
col1 := REGEXP_SUBSTR(row_emp.str,'[^_]+',1,1,'i');
col2 := REGEXP_SUBSTR(row_emp.str,'[^_]+',1,2,'i');
Update t Set c=Sysdate Where a=col1 And b=col2;
FETCH cur_emp INTO row_emp;
END LOOP;
End;
你是提供思路让别人给你编码吗?我觉得你搞反了吧,我怎么觉得应该是某些大牛给你提供思路你自己去编码呢,自己都有思路了还问什么并没有看到你遇到什么不会的问题。