日期:2014-05-17  浏览次数:20956 次

oracle 存储过程插入数据的问题?

表stu   有3个字段为id,name,age,class

现在编写一个添加记录的过程,
要求:

name       age       class
fk0         22         0101
fk1         23         0102
fk2         24         0103

形成迪卡尔集插入,即插入后的结果应该是一共有3x3x3=27条记录,
并且要求name,age,class   所有的输入数据以参数的形式一起传入(什么形式传都可以),  
过程如何编写,请高手指点?


------解决方案--------------------
我的异常网推荐解决方案:oracle存储过程,http://www.aiyiweb.com/oracle-develop/177537.html
------解决方案--------------------
CREATE OR REPLACE PROCEDURE TEST IS
--首先建个临时表,把值导入
CURSOR C1 IS
SELECT ST1.NAME FROM STU_TEMP ST1;
CURSOR C2 IS
SELECT ST2.AGE FROM STU_TEMP ST2;
CURSOR C3 IS
SELECT ST3.CLASS FROM STU_TEMP ST3;
I NUMBER := 1;
BEGIN
FOR REC1 IN C1 LOOP
FOR REC2 IN C2 LOOP
FOR REC3 IN C3 LOOP
INSERT INTO STU
(ID, NAME, AGE, CLASS)
VALUES
(I, REC1.NAME, REC2.AGE, REC3.CLASS);
I := I + +;
END LOOP;
END LOOP;
END LOOP;
END TEST;
---试下看行不
------解决方案--------------------
可以考虑把程序写在前台处理上面,这样用3个数组3个循环变量就能轻松实现。
当然在oracle里也可以.
楼上的方法也可以,不过用游标的话,对性能影响大,你这还好只有3条,如果多条就会很慢