declare start_num T1.start_num@TYPE; end_num T1.end_num@TYPE; thousand_num T2.thousand_num@TYPE; hundred_num T3.hundred_num@TYPE; temp T1.start_num@TYPE; CURSOR t1_cursor IS SELECT start_num ,end_num FROM T1BEGIN OPEN t1_cursor; FETCH t1_cursor INTO start_num,end_num; IF start_num>end_num THEN FOR temp IN start_num..end_num LOOP INSERT INTO T2 values(temp); END LOOP; ELSE FOR temp IN start_num..end_num LOOP INSERT INTO T3 values(temp); END LOOP; CLOSE t1_cursor;END;
从start_num到end_num一个一个的取值 --这个是什么意思,自增一来取值?
楼上 sunlen(伏枥),我觉得你写的有 些问题IF start_num>end_num THEN FOR temp IN start_num..end_num LOOP INSERT INTO T2 values(temp); end_num 肯定比start_num大的,而且start_num,end_num 都是varchar2,能直接FOR temp IN start_num..end_num LOOP这样做for循环吗?
declare start_num varchar2(20); end_num varchar2(20); thousand_num varchar2(20); hundred_num varchar2(20); temp number(20); CURSOR t1_cursor IS SELECT start_num ,end_num FROM T1BEGIN OPEN t1_cursor; FETCH t1_cursor INTO start_num,end_num;
FOR temp IN to_number(start_num)..to_char(end_num) LOOP
IF length(to_char(end_num)-to_number(start_num))=4 THEN INSERT INTO T2 values(to_char(temp)); ELSIF length(to_char(end_num)-to_number(start_num))=3 THEN INSERT INTO T3 values(to_char(temp)); ELSE ENDIF; END LOOP; CLOSE t1_cursor;END;不知道上的写法有没有问题?
start_num T1.start_num@TYPE;
end_num T1.end_num@TYPE;
thousand_num T2.thousand_num@TYPE;
hundred_num T3.hundred_num@TYPE;
temp T1.start_num@TYPE; CURSOR t1_cursor IS
SELECT start_num ,end_num FROM T1BEGIN
OPEN t1_cursor; FETCH
t1_cursor
INTO start_num,end_num; IF start_num>end_num THEN
FOR temp IN start_num..end_num LOOP
INSERT INTO T2 values(temp);
END LOOP;
ELSE
FOR temp IN start_num..end_num LOOP
INSERT INTO T3 values(temp);
END LOOP; CLOSE t1_cursor;END;
FOR temp IN start_num..end_num LOOP
INSERT INTO T2 values(temp);
end_num 肯定比start_num大的,而且start_num,end_num 都是varchar2,能直接FOR temp IN start_num..end_num LOOP这样做for循环吗?
start_num varchar2(20);
end_num varchar2(20);
thousand_num varchar2(20);
hundred_num varchar2(20);
temp number(20); CURSOR t1_cursor IS
SELECT start_num ,end_num FROM T1BEGIN
OPEN t1_cursor; FETCH
t1_cursor
INTO start_num,end_num;
FOR temp IN to_number(start_num)..to_char(end_num) LOOP
IF length(to_char(end_num)-to_number(start_num))=4 THEN
INSERT INTO T2 values(to_char(temp)); ELSIF length(to_char(end_num)-to_number(start_num))=3 THEN
INSERT INTO T3 values(to_char(temp));
ELSE
ENDIF;
END LOOP; CLOSE t1_cursor;END;不知道上的写法有没有问题?