将Oracle Reports 12c保存为PDF文件



我有下面的代码,它为表中的每个记录生成一个pdf文件,其中包含指向特定文件夹的电子邮件地址,但我已经意识到,在每次迭代中,URL都会附加到下一次迭代中,这使URL在每次循环中都会增加。因此,当浏览器达到极限后,它会抛出一个错误,只生成10个文件,而我预计大约有1500个pdf文件。

PROCEDURE RUN_REPORT2 IS   
M_PARAM_ID      PARAMLIST ;    
M_REP_ID        VARCHAR2(3000);    
V_REP_CURRENCY  VARCHAR2(5);    
V_BASE_CURRENCY VARCHAR2(5);    
v_show_document VARCHAR2(30000);    
v_report_name   VARCHAR2(30000);    
v_format        VARCHAR2(200)   := 'PDF';

CURSOR C1 IS 

SELECT EMP_EMPLOYEE_NO,
INITCAP(EMP_FIRSTNAME) EMP_FIRSTNAME,
EMP_EMAIL_ADDRESS,
TO_CHAR(PMA_PAY_PERIOD_TO, 'MONTH' || ' ' || 'YYYY') PAY_PERIOD,
EMP_TIN DOB,
TRIM(TO_CHAR(PMA_PAY_PERIOD_TO, 'MONTH')) PAY_MONTH,
TRIM(TO_CHAR(PMA_PAY_PERIOD_TO, 'YYYY')) PAY_YEAR
FROM HR_EMPLOYEES, PAY_PAYROLL_MASTER
WHERE EMP_EMPLOYEE_ID = PMA_EMPLOYEE_ID
AND EMP_COMPANY_CODE = PMA_COMPANY_CODE
AND EMP_EMAIL_ADDRESS IS NOT NULL
AND EMP_EMPLOYEE_NO BETWEEN :ONE.EMPNO_FM AND :ONE.EMPNO_TO
AND TO_CHAR(PMA_PAY_PERIOD_TO, 'Month YYYY') = :ONE.PAY_PERIOD
AND PMA_COMPANY_CODE = :GLOBAL.COMPNAME

BEGIN

SELECT PAR_REPORT_URL, PAR_FORMS_DIRECTORY
INTO v_show_document, v_report_name
FROM APPS_PARAMETERS
WHERE PAR_COMPANY_CODE = :GLOBAL.COMPNAME;

FOR C1_R IN C1 LOOP    
v_show_document := v_show_document

|| '&report='||v_report_name||'PAYSLIP_EIC_EMAIL.jsp'    
|| '&destype=file'    
|| '&desformat='||v_format    
|| '&P_EMPNO_FM='||C1_R.EMP_EMPLOYEE_NO    
|| '&P_EMPNO_TO=' ||C1_R.EMP_EMPLOYEE_NO    
|| '&P_DEPT_FM='||:ONE.DEPT_FM    
|| '&P_DEPT_TO=' ||:ONE.DEPT_TO    
|| '&P_REG_FM='||:ONE.REG_FM    
|| '&P_REG_TO=' ||:ONE.REG_TO    
|| '&P_REP_CURRENCY=' ||V_REP_CURRENCY    
|| '&P_PERIOD='||:ONE.PAY_PERIOD    
|| '&P_COMPCODE=' ||:GLOBAL.COMPNAME    
|| '&desname='||v_report_name||'EMAIL_FOLDER'||C1_R.EMP_EMAIL_ADDRESS||' '||C1_R.EMP_FIRSTNAME||' 
'||C1_R.PAY_MONTH||C1_R.PAY_YEAR||'.PDF';

WEB.SHOW_DOCUMENT(v_show_document||'&cmdkey=userlogin','_blank');

SET_APPLICATION_PROPERTY(CURSOR_STYLE, 'DEFAULT');
DESTROY_PARAMETER_LIST(M_PARAM_ID) ;

CLEAR_MESSAGE;  
END LOOP;

END;

我理解它的方式是:

v_show_document := v_show_document

|| '&report='||v_report_name||'PAYSLIP_EIC_EMAIL.jsp'    

应该是

v_show_document := 

'&report='||v_report_name||'PAYSLIP_EIC_EMAIL.jsp'    

否则,每次都要将v_show_document与上一个循环的迭代连接起来,使其变得庞大(或多或少毫无用处(。

最新更新