首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将oracle报表从6i更新到10g

将oracle报表从6i更新到10g
EN

Stack Overflow用户
提问于 2018-10-25 12:19:32
回答 2查看 207关注 0票数 0

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

代码语言:javascript
复制
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中运行。

我对在10g中运行oracle reports做了什么更改

谢谢

EN

回答 2

Stack Overflow用户

发布于 2018-10-25 13:18:00

通常的方法是使用WEB.SHOW_DOCUMENT

这是莎拉在OTN forums上发布的一个示例的(稍微格式化的)复制/粘贴(以防链接断开)。看看有没有帮助。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-10-25 14:46:37

除了@Littlefoot指出的,你可以使用融合中间件的Report conversion tool。在使用该工具进行处理之后,应该通过表单的附着库部分附加Rp2Rro.pll

毕竟,您可以添加一个即席过程,如下所示:

代码语言:javascript
复制
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;

这可以(以按钮为例)调用,如下所示:

代码语言:javascript
复制
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;  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52981298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档