日期:2014-05-16  浏览次数:20933 次

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

             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%'