日期:2014-05-17  浏览次数:21485 次

oracle动态执行update语句
请大家帮忙看下哪里写错了,执行报错:无效字符
declare
v_tablename varchar2(500):='HRM_ChangeInspect,HRM_ChangeInspReg,';
v_str varchar2(500);
v_updateinfo varchar2(500);
begin
  while instr(v_tablename,',')>0 loop
  v_str:=substr(v_tablename,1,instr(v_tablename,',')-1);
  v_updateinfo:=v_updateinfo||'update '||v_str||' set WFTopic=replace(WFTopic,substr(WFTopic,2,1),''*'');';
  --dbms_output.put_line(v_updateinfo);
  execute immediate v_updateinfo;
  v_tablename:=substr(v_tablename,instr(v_tablename,',')+1,length(v_tablename));
  end loop;
end;

dbms_output.put_line(v_updateinfo);
出来的语句可以正常执行

------解决方案--------------------
SQL code
 v_updateinfo:=v_updateinfo||'update '||v_str||' set WFTopic=replace(WFTopic,substr(WFTopic,2,1),''*'');'

------解决方案--------------------
新手,注意结贴!建议你下我上传的调试程序,一下就出来,不用那么纠结看什么语法错误!