I had this loop:
Then I selected the loop's code section and refactored. This is what I got:
v_lin values (v_lin.line_num and v_lin.lease_num), which should become parameters, weren't taken into account.
Code:
For v_lin In (Select pola.line_num,
pnla.lease_num
From pn_leases_all pnla,
po_lines_all pola
Where pnla.lease_id = to_number(pola.attribute3)
And pola.po_header_id = vn_document_id) Loop
vs_line_ident := 'headers="lineNum_1">' || to_char(v_lin.line_num) ||
'[/TD]';
vn_line_ini := instr(l_document, vs_line_ident) + 20;
vn_column_ini := instr(l_document, '[/TR]', vn_line_ini);
l_document := substr(l_document, 1, vn_column_ini - 1) ||
htf.tabledata(v_lin.lease_num,
cnowrap => 'True',
cattributes => 'headers="leaseNum_1"') ||
chr(10) || substr(l_document, vn_column_ini);
End Loop;
Code:
Procedure append_data(l_document In Out Clob) Is
vs_line_ident VarChar2(100);
vn_line_ini Number;
vn_column_ini Number;
Begin
vs_line_ident := 'headers="lineNum_1">' || to_char(v_lin.line_num) ||
'[/TD]';
vn_line_ini := instr(l_document, vs_line_ident) + 20;
vn_column_ini := instr(l_document, '[/TR]', vn_line_ini);
l_document := substr(l_document, 1, vn_column_ini - 1) ||
htf.tabledata(v_lin.lease_num,
cnowrap => 'True',
cattributes => 'headers="leaseNum_1"') ||
chr(10) || substr(l_document, vn_column_ini);
End append_data;