Oracle 函数 “申请通过后,将该表中循环遍历到的所有内容插到另一个表中”

 1 create or replace function mcode_apply_insert_material(p_mca_no       VARCHAR2,
 2                                                   p_action       VARCHAR2,
 3                                                   p_wf_node_code VARCHAR2)
 4 
 5        RETURN VARCHAR2 AS   -- 函数作用:当物料申请审核通过之后,将物料申请表中的数据插入到物料管理表中
 6 
 7        v_material_code  MCA_DETAIL.MATERIAL_CODE%TYPE;
 8        v_material_name  MCA_DETAIL.MATERIAL_NAME%TYPE;
 9        v_partner        MCA_DETAIL.PARTNER%TYPE;
10        v_manufaturer    MCA_DETAIL.MANUFATURER%TYPE;
11        v_specification  MCA_DETAIL.SPECIFICATION%TYPE;
12        v_unit           MCA_DETAIL.UNIT%TYPE;
13        v_remark         MCA_DETAIL.REMARK%TYPE;
14     
15 
16        CURSOR get_final_supplies_data IS
17               SELECT m.material_code,m.material_name,m.partner,m.manufaturer,m.specification,m.unit,m.remark
18               FROM   MCA_DETAIL m
19               WHERE  m.mca_no = p_mca_no;
20 
21 BEGIN
22    IF p_action = '03' AND p_wf_node_code = 2 THEN -- 工作流 ,如果在2节点 审核通过“03”,执行下面语句
23           OPEN get_final_supplies_data;
24           LOOP     -- loop   exit when ...%notfound:遍历(循环)
25           FETCH get_final_supplies_data INTO v_material_code,v_material_name,v_partner,v_manufaturer,v_specification,v_unit,v_remark;
26           exit when get_final_supplies_data%notfound;    -- 当get_final_supplies_data遍历完后,退出循环,执行下面的语句
27             -- material:物料管理表
28             INSERT INTO material(material_code,partner,specification,material_name,unit_of_measurement,remark,manufaturer) 
29             VALUES(v_material_code,v_partner,v_specification,v_material_name,v_unit,v_remark,v_manufaturer);
30           
31           END LOOP; -- 结束循环
32           CLOSE get_final_supplies_data;
33      
34      END IF;
35      
36      RETURN '0';
37      
38 end mcode_apply_insert_material;

注:如需测试该函数,请复制到Oracle数据库中,右击函数名“mcode_apply_insert_material”,选择“test” 进行测试,测试时记得把相应的表名及字段换成自己建立的

原创作者:DSHORE

出处:http://www.cnblogs.com/dshore123/

欢迎转载,转载务必说明出处。(如果本文对你有用,可以点击一下右下角的 推荐,谢谢!

原文地址:https://www.cnblogs.com/dshore123/p/7825427.html