将Oracle报告从6i更新到10g

时间:2018-10-25 04:19:32

标签: oracle oracleforms oraclereports

我在以下代码中运行oracle reports 6i

IF :Global.Report_id IN ('XB_RFMODSM_DESA') THEN                     
 Add_Parameter(pl_login1,'P_MONTH',TEXT_PARAMETER,:BLK_REPORT.BILL_CYCLE_CODE);
 Add_Parameter(pl_login1,'LOCATION_CODE',TEXT_PARAMETER, vvc_location);                  
 Add_Parameter(pl_login1,'FEEDER_NO1',TEXT_PARAMETER,vch_feeder);
 Rep_id := LTRIM(rtrim(:Global.Report_id));
 Run_Product(REPORTS, Rep_id, SYNCHRONOUS, RUNTIME, FILESYSTEM, pl_login1, NULL);
END IF;

现在我想在oracle 10g中跑步。

我对oracle reports中的运行10g进行了哪些更改?

谢谢

2 个答案:

答案 0 :(得分:1)

通常的做法是使用WEB.SHOW_DOCUMENT

这是Sarah在OTN forums上张贴的示例的(略有格式的)复制/粘贴(以防链接断开)。看看是否有帮助。

DECLARE 
  repid REPORT_OBJECT;
  v_rep VARCHAR2(100);
  rep_status VARCHAR2(20);
  plid ParamList; 
  vParamValue number;
BEGIN

  plid := Get_parameter_List('tmp'); 

  IF NOT Id_Null(plid) THEN 
     Destroy_parameter_List( plid ); 
  END IF; 

  plid := Create_parameter_List('tmp'); 

  add_parameter(plid, 'p_parameter',text_parameter,to_char(:block.item));   
  add_parameter(plid, 'PARAMFORM', TEXT_parameter, 'NO');

  repid := FIND_REPORT_OBJECT('REPORT6');

  SET_REPORT_OBJECT_PROPERTY(repid,REPORT_COMM_MODE,SYNCHRONOUS);
  SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESTYPE,cache);    
  SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESFORMAT,'PDF');
  SET_REPORT_OBJECT_PROPERTY(repid,REPORT_OTHER, 'paramform=no');

  v_rep := RUN_REPORT_OBJECT(repid,plid);
  rep_status := REPORT_OBJECT_STATUS(v_rep); 

  WHILE rep_status in ('RUNNING','OPENING_REPORT','ENQUEUED') 
  LOOP 
    rep_status := report_object_status(v_rep); 
  END LOOP; 

  /*Display report in the browser*/ 
  WEB.SHOW_DOCUMENT('http://Machine_name:Port/reports/rwservlet/getjobid' ||
      substr(v_rep,instr(v_rep,'_',-1)+1) || '?' ||
     'server=Report_server_name&P_parameter=' ||:block.item ||
     '&paramform=no'); 

END; 

答案 1 :(得分:1)

@Littlefoot指出的替代方法,您可以使用融合中间件Report conversion tool。使用该工具处理后,Rp2Rro.pll应该通过表单的附加库部分附加。

毕竟,您可以将临时过程添加为:

Procedure Pr_Print_Rp2Rro( 
                          Rep_id       in out varchar2, 
                          i_param_name        varchar2, 
                          i_param_var         varchar2,
                          i_param_frm         varchar2, -- 'Yes','No'
                          i_repsrv            varchar2,                           
                          i_desname           varchar2,
                          i_destype           varchar2 default 'FILE',
                          i_desformat         varchar2 default 'PDF'
                          ) Is
  pl_login1        ParamList;   
  arr_param_name   owa.vc_arr; 
  arr_param_var    owa.vc_arr;  
Begin
  pl_login1 := Get_Parameter_List('REPPARAM');
 if not Id_Null(pl_login1) then
  Destroy_Parameter_List('REPPARAM');
 end if;
  pl_login1 := Create_Parameter_List('REPPARAM');  
  Add_Parameter(pl_login1, 'PARAMFORM', Text_Parameter,  i_param_frm); 
  Add_Parameter(pl_login1, 'RP2RROREPORTSERVER', Text_Parameter, i_repsrv );  
  Add_Parameter(pl_login1, 'RP2RRODESTYPE', Text_Parameter,  i_destype );  
  Add_Parameter(pl_login1, 'RP2RRODESNAME', Text_Parameter,  i_desname );      
  Add_Parameter(pl_login1, 'RP2RRODESFORMAT', Text_Parameter,  i_desformat );  

  for i in 1..100
  loop 
     arr_param_name(i) := substr(i_param_name,instr(i_param_name,'|',1,i)+1,
                instr(i_param_name,'|',1,1+i)-instr(i_param_name,'|',1,i)-1);

     arr_param_var(i)  := substr(i_param_var,instr(i_param_var,'|',1,i)+1,
                instr(i_param_var,'|',1,1+i)-instr(i_param_var,'|',1,i)-1);   

     if length(arr_param_name(i)) > 0 then
       Add_Parameter( pl_login1, arr_param_name(i) , Text_Parameter, arr_param_var(i) );
     end if;
  end loop; 
       Rep_id := ltrim(rtrim(:Global.Report_id));
       Rp2rro.Rp2rro_Run_Product(Reports, Rep_id, Synchronous, Runtime,Filesystem, pl_login1,null);
End;

可以这样称呼(例如,通过按钮 ):

declare
  vvc_location tabFeederDesign.vvc_location%type;
  vch_feeder   tabFeederDesign.vch_feeder%type; 
  v_Rep_id     varchar2(500):='Rep123';
  v_server     varchar2(500):='mySrv'; 
  v_file       varchar2(500):='file456';  
begin    
  Pr_Print_Rp2Rro(v_Rep_id,'|P_MONTH|LOCATION_CODE|FEEDER_NO1|','|'||:BLK_REPORT.BILL_CYCLE_CODE||'|'||vvc_location||'|'||vch_feeder||'|','No',v_server,v_file);
end;