存储过程截取字符串循环

2025-03-23 21:06:45
推荐回答(3个)
回答1:

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;

回答2:

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

最后如果原来的数据不需要的话,就删掉
大概就是这样吧,没有确认过,请适当修改,请参考。

回答3:

2重循环,和你用其他语言一样的。