存储过程截取字符串循环

有表A,字段A1、A2

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

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

(1,2)(2,2)(3,2)(4,2)

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;
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-14
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

最后如果原来的数据不需要的话,就删掉
大概就是这样吧,没有确认过,请适当修改,请参考。
第2个回答  2012-03-14
2重循环,和你用其他语言一样的。追问

是到存储过程里面,能够帮忙实现下吗?

相似回答