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/ 欢迎转载,转载务必说明出处。(如果本文对你有用,可以点击一下右下角的 推荐,谢谢!) |