首页 热点资讯 义务教育 高等教育 出国留学 考研考公

oracle存储过程 循环判断插入 急!!!

发布网友 发布时间:2022-04-23 06:14

我来回答

3个回答

热心网友 时间:2022-04-09 06:23

不需要两个游标。
把查出来的内容 放到一起,吧type 放到一起, 平且排序
然后再根据type 依次插入,游标中,进行if逻辑判断就可以了。

热心网友 时间:2022-04-09 07:41

“就是先将type1 的所有插入到那个表,
然后在吧表清空,再去插type2的 数据”
这个描述没看懂。
是不是要从a表取出数据,type等于1的处理后插入b表,type等于2的处理后插入c表?
在这样的情况下,如果处理逻辑简单,只需要一句insert all就够了。
用不着什么游标。效率也好。
insert all的写法是这样的:
insert all
WHEN type = 1 and 其他条件等等 THEN
INTO TABLE_B VALUES (c1,c2,c3)
WHEN type = 2 and 其他条件等等 THEN
INTO TABLE_C VALUES (c1+1,C2*2,c4,c5)
ELSE
INTO TABLE_B VALUES(c3+3,c4-5,c5*7)
SELECT type,c1,c2,c3,c4,c5 FROM table_A
;

INTO 的表可以是同一个表,也可以不同,表结构也可以不同。

热心网友 时间:2022-04-09 09:16

你这个问题还是很简单的。
首先可以肯定游标是需要的,至少需要两个游标。
循环的话也是肯定的,你去找下例子看看。
大致类似如下。
DECLARE
2 v_id INT;
3 v_value VARCHAR(10);
4 -- 定义游标.
5 CURSOR c_test_main IS
6 SELECT id, value FROM test_main;
7 BEGIN
8 -- 打开游标.
9 OPEN c_test_main;
10 -- 填充数据.
11 FETCH c_test_main INTO v_id, v_value;
12 -- 假如检索到了数据,才处理.
13 WHILE c_test_main%FOUND LOOP
14 dbms_output.put_line(v_value);
15 -- 填充下一条数据.
16 FETCH c_test_main INTO v_id, v_value;
17 END LOOP;
18 -- 关闭游标
19 CLOSE c_test_main;
20 END;
21 /
TWO
THREE
ONE

PL/SQL procere successfully completed.

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com