存储过程截取字符串循环
有表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) 展开
现在有字符串A1,比如说为(1,2,3,4),A2(2)
需要给A1的字符串按逗号截取,然后添加到表里面,使得A表的数据为
(1,2)(2,2)(3,2)(4,2) 展开
3个回答
展开全部
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;
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;
展开全部
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
最后如果原来的数据不需要的话,就删掉
大概就是这样吧,没有确认过,请适当修改,请参考。
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
最后如果原来的数据不需要的话,就删掉
大概就是这样吧,没有确认过,请适当修改,请参考。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
2重循环,和你用其他语言一样的。
追问
是到存储过程里面,能够帮忙实现下吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询