表stu 有3个字段为id,name,age,class现在编写一个添加记录的过程,
要求:name   age   class
fk0    22    0101
fk1    23    0102
fk2    24    0103形成迪卡尔集插入,即插入后的结果应该是一共有3x3x3=27条记录,
并且要求name,age,class 所有的输入数据以参数的形式一起传入(什么形式传都可以), 
过程如何编写,请高手指点?

解决方案 »

  1.   

    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;
    ---试下看行不
      

  2.   

    可以考虑把程序写在前台处理上面,这样用3个数组3个循环变量就能轻松实现。
    当然在oracle里也可以.
    楼上的方法也可以,不过用游标的话,对性能影响大,你这还好只有3条,如果多条就会很慢