楼主,你本意传入的变量动态做表名,但oracle在编译你的存储过程时,对于 update gd_ckldzb set zzf=(select newjgdm from tablename where oldjgdm=zzf) where zzf IN (SELECT OLDJGDM FROM JGDM_TeMP) and rownum<500000; 解析为 update gd_ckldzb set zzf=(select newjgdm from :bind_value where oldjgdm=zzf) where zzf IN (SELECT OLDJGDM FROM JGDM_TeMP) and rownum<500000; :bind_value此时的值还没有传进来,这条sql就不成立啦....对于sql语句中表名、字段等关键字,用动态sql也不行,楼主想办法改一改吧。
update gd_ckldzb set zzf=(select newjgdm from tablename where oldjgdm=zzf)
where zzf IN (SELECT OLDJGDM FROM JGDM_TeMP)
and rownum<500000;
解析为
update gd_ckldzb set zzf=(select newjgdm from :bind_value where oldjgdm=zzf)
where zzf IN (SELECT OLDJGDM FROM JGDM_TeMP)
and rownum<500000;
:bind_value此时的值还没有传进来,这条sql就不成立啦....对于sql语句中表名、字段等关键字,用动态sql也不行,楼主想办法改一改吧。