动态执行语句错误

动态执行语句异常求解 如题:beginls_tmp_sql : select nvl(max(to_number(substr(||ls_fsjkzdm||,||l

动态执行语句异常
求解 如题:

             begin
               ls_tmp_sql := 'select nvl(max(to_number(substr('||ls_fsjkzdm||','||ls_sub_num||'))),1) from '||ls_fsjkmc||'.'||ls_fsjkbm||' where '||ls_fsjkzdm||' like '||'''%'||ls_tmp_pre||'______%'||'''';
     

               execute immediate ls_tmp_sql into lh_tmp1;
             end;


执行到 execute immediate  出异常

求高人指点
[解决办法]
你的like写的太复杂了,参考下面的like:


declare
  vstr_sql varchar2(4000);
begin
  vstr_sql :='select 1 from dual where dummy like ''%'
[解决办法]
&abc
[解决办法]
'%''';
  dbms_output.put_line(vstr_sql);
end;


执行输入'dsfsd',打印出来的SQL语句如下:
select 1 from dual where dummy like '%dsfsd%'