存储过程截取字符串循环

有表A,字段A1、A2现在有字符串A1,比如说为(1,2,3,4),A2(2)需要给A1的字符串按逗号截取,然后添加到表里面,使得A表的数据为(1,2)(2,2)(3,2... 有表A,字段A1、A2

现在有字符串A1,比如说为(1,2,3,4),A2(2)

需要给A1的字符串按逗号截取,然后添加到表里面,使得A表的数据为

(1,2)(2,2)(3,2)(4,2)
展开
 我来答
王海超521
推荐于2016-05-20 · TA获得超过852个赞
知道小有建树答主
回答量:406
采纳率:0%
帮助的人:382万
展开全部
CREATE OR REPLACE PROCEDURE SP_VALUE(P_A1 IN VARCHAR2, P_A2 IN VARCHAR2) AS
V_NUM NUMBER;
V_A1 VARCHAR2(200);
BEGIN
---1,2,3,4
V_A1 := P_A1;
IF INSTR(P_A1, ',', 1, 1) <> 0 THEN
LOOP
INSERT INTO A
(A1, A2)
SELECT SUBSTR(V_A1, 1, INSTR(V_A1, ',', 1, 1) - 1), P_A2 FROM DUAL;
COMMIT;
V_A1 := SUBSTR(V_A1, INSTR(V_A1, ',', 1, 1) + 1);
SELECT INSTR(V_A1, ',', 1, 1) INTO V_NUM FROM DUAL;
IF V_NUM = 0 THEN
INSERT INTO A
(A1, A2)
SELECT V_A1, P_A2 FROM DUAL;
COMMIT;
EXIT;
END IF;
END LOOP;
END IF;
END SP_VALUE;
yaogogo2010
2012-03-14 · TA获得超过2546个赞
知道小有建树答主
回答量:1187
采纳率:0%
帮助的人:1236万
展开全部
declare @i int
set @i = 0
while @i < 8 --根据你的数据长短,适当修改值的大小
begin
insert into a (a1,a2)
select substring(a1,@i,1),a2 from a
where len(a1) >4 

set @i = @i + 2
end

最后如果原来的数据不需要的话,就删掉
大概就是这样吧,没有确认过,请适当修改,请参考。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
micro0369
2012-03-14 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4087万
展开全部
2重循环,和你用其他语言一样的。
追问
是到存储过程里面,能够帮忙实现下吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式