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

存储过程中使用for出现ORA-01732
CREATE OR REPLACE PROCEDURE test
AS
i number;
a varchar2(100);
b varchar2(100);
c varchar2(100);
  BEGIN
  for i in 1..12 loop
  a:='M||i';
  b:='hj_||i||m';
  c:='zl_M||i';
  update ydtjb_12m set a = b / c * 100;
  commit;
  end loop;
  END;

ora-01732错误:data manipulation operation not legal on this view ,现请教出现这个错误的解决办法。


------解决方案--------------------
a:='M'||i;
b:='hj_'||i||'m';
c:='zl_M'||i;

ydtjb_12m是表还是视图 如果是视图看视图是否可以修改数据
另外你要保证你 拼接的a值 确实是ydtjb_12m里的一个列名
另外我想问你 你拼接的b,c 不会是ydtjb_12m里的列名吧
如果是 那就用
varchar2(100) str := 'update ydtjb_12m set '|| a || '=' ||b||'/'||c||'*100';
execute immediate str;