create or replace procedure SP_T_mac_Info(
  wf_id_in           in        number,--表单ID,根据它查询对应的角色,数据库没有该字段
  ORDER_NO in VARCHAR2,--备货单号(插入时必填)
  SALES_ORDER in VARCHAR2,--加工订单号(插入时必填)
  Item_id in varchar2 --组件ID,查询mac地址,没有该字段) is
  ORDER_NO2   VARCHAR2(100); 
  app_req_id  number(10);
  app_user_name varchar2(50);
 --sp_dypost_beihuo_liangchanbegin
     ORDER_NO2:=substr(ORDER_NO,9,9);
     select init_id into app_req_id from ecl_request_sheet where request_id = wf_id_in;
     select mi into app_user_name from user_table where myws_id = app_req_id;
   
    insert into T_mac_Info(ORDER_NO,SALES_ORDER,START_MAC,END_MAC,CREATE_DATE,STATUS,EMP_NAME,UPDATE_DATE,id,TEXT) 
    select ORDER_NO as order_no ,SALES_ORDER as sales_order,a.col_1_value as start_mac,a.col_2_value as end_mac,'' as create_date,'N' as status, app_user_name as emp_name,''as update_date,ORDER_NO2 as id,
    '' as test from ecl_request_form_grid_data a where a.item_id=Item_id;
 COMMIT;  EXCEPTION  WHEN OTHERS THEN
  ROLLBACK;
  RAISE;END;
-------------------------------
调用的时候 说不能插入空值。等于说Item_id没有传过去。 这是为何?
自己测试那条insert 语句的时候能行的。求大神分析
begin
SP_T_mac_Info(94405,'BHC-20121018-004','123','42750');
END;