问答详情
源自:2-3 [Oracle] 如何调试存储过程

Oracle 报错ORA-00904:标示符无效 (百度了没有解决 )

Oracle 报错ORA-00904:标示符无效 (百度了没有解决 )

create or replace procedure raisesalary(eno in number)as
--定义一个变量保存涨前的薪水 
psal emp.sal%type;
begin
--得到员工涨前的薪水 
select sal into psal from emp where empno=eno;
--给该员工涨100 
update emp set sal=sal+100 where empno=eno;
--需不需要commit?
--注意:一般不在存储过程或者存储函数中,执行commit和rollback
--打印 
dbms_output.put_line('涨前:'||psal||'  涨后:'||(psal+100));
end;

调试时 :

https://img4.mukewang.com/5b267e9b00017cef09760422.jpg

提问者:19travelSky 2018-06-17 23:30

个回答

  • 慕九州州
    2021-05-13 00:04:07

    看着好像是没毛病啊,检查下emp表,看下select和update的这个列名是否就是你创建的,有没有写错不一致之类的

  • Caesar_the_great
    2018-06-26 14:16:15

    1、字段名或者表名写错了,仔细检查核对一下,如果实在是没有发现错的地方就有可能是第二种情况了

    第二种情况就是:你的字段包含了oracle的关键字,把报错的字段用双引号括起来试试

     

    现在举一个我今天遇到的例子:

     insert into SSQX_SURGERY_INFO (ID, PackId, REMARK, DEPARTID, AMOUNT, PRIORITY)
    values (3, 11, '1rt', 1, 1, 'fdg')       一直报PackId是无效标识符

     改成insert into SSQX_SURGERY_INFO (ID, ”PackId“, REMARK, DEPARTID, AMOUNT, PRIORITY)
    values (3, 11, '1rt', 1, 1, 'fdg')   就OK啦, PackId在oracle的关键字