rec_param.val is of type varchar2(4000)
type rec_param is record(
name varchar2(255),
val varchar2(4000));
append_param accepts any length varchar2 for p_val, but raises an error when length(p_val) > 4000.
Recommend substring p_val to 4000 characters as shown below.
procedure append_param(
p_params in out nocopy logger.tab_param,
p_name in varchar2,
p_val in varchar2
)
as
l_param logger.rec_param;
begin
$if $$no_op $then
null;
$else
l_param.name := p_name;
l_param.val := substr(p_val, 1, 4000); -- <============
p_params(p_params.count + 1) := l_param;
$end
end append_param;