_ename改成v_ename, _sal改成v_sal就行了

解决方案 »

  1.   

    变量的命名规则是:以字母开头,后跟其他的字符序列,字符序列中可以包含字母、数值、下划线等符号,最大长度为30个字符,不区分大小写。不能使用Oracle的保留字作为变量名。变量名不要和在程序中引用的字段名相重,如果相重,变量名会被当作列名来使用。 
      

  2.   

    不是楼上说的这个原因,
    要用动态sql
    execute immediate ' update ......';
    commit ;
    当然了,你的命名也不规范
      

  3.   

    这位兄弟,如果涉及到表名或者sql需要检测的东西,语句才会执行不了呀,如
    update v_table set ....   --这个v_table是一个变量,oracle在语句未赋值之前已经进行检测是否有v_table这个表,而不是当变量来用,这个时候的动态sql就需要用到execute immediate
    而像update emp set sal = _sal,emane = _ename;是可以直接使用的
    当然,使用execute immediate执行效率上会有一定的提升
      

  4.   

    命名应该有问题 也少了commit吧