Reputation: 11
I have the below code which generates a pdf file for each record in the table with an email address to a specific folder, but what I have realized is that on each iteration the URL is appended to the next iteration, which makes the URL increases on each loop. So after the browser reaches its limit it throws an error and generates only 10 files when I am expecting about 1500 pdf files.
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;
Upvotes: 1
Views: 848
Reputation: 142710
The way I understood it, this:
v_show_document := v_show_document
|| '&report='||v_report_name||'PAYSLIP_EIC_EMAIL.jsp'
should be
v_show_document :=
'&report='||v_report_name||'PAYSLIP_EIC_EMAIL.jsp'
Otherwise, you're concatenating v_show_document
with previous loop's iteration every time, making it HUGE (and more or less useless).
Upvotes: 1