【Oracle】Navicat出现 ORA-24344: 成功, 但出现编译错误 的解决办法

Navicat出现 ORA-24344: 成功, 但出现编译错误 的解决办法

相信很多朋友是在navicat中创建存储过程的时候碰到的这个问题,我之前以为是软件的bug,但是想这么大的公司不会出这种低级错误。来回折腾之后,找到了解决办法,或者说测试办法。如下。

1.在Navicat中新建一个SQL查询窗口,键入以下存储过程。
这段存储过程的意思是 以一个整数为参数,输入工资最高的前几个(参数值)员工的信息

create or replace procedure my_p (v_n in number) is
cursor csr is select * from emp order by sal DESC;
i number :=0;
begin
 for v_emp in csr loop
 i := i+1;
 dbms_output.put_line(v_emp.ENAME || '--' || v_emp.SAL);
 if i = v_n then
 exit;
 end if;
 end loop;
end;

2.选择以上代码 --> “运行已选择的”
【Oracle】Navicat出现 ORA-24344: 成功, 但出现编译错误 的解决办法
3.若出现以下信息,则说明软件没有问题。 而是我们(你自己)的代码出问题了。
【Oracle】Navicat出现 ORA-24344: 成功, 但出现编译错误 的解决办法
那么这时候需要去检查我们(你自己)的代码,如dbms输出时字段名连接字符串的时候,有无双竖线、该有的分号有没有加上。一般到这一步,90%朋友的问题基本解决了。
4.如果实在不行,那么只能试一试这个办法:

在窗口的左侧,点击你的用户,比如我的SCOTT用户
【Oracle】Navicat出现 ORA-24344: 成功, 但出现编译错误 的解决办法
然后双击我们的EMP表(你自己需要操作的表),具体原理不太清楚,只是自己这么弄一下之后,就不会出现编译错误了…可能Navicat需要预加载数据?
【Oracle】Navicat出现 ORA-24344: 成功, 但出现编译错误 的解决办法
5.再去运行代码,这时候应该93.57%朋友的问题得到解决了。

tips:
a.网上说的大小写问题我试过了,没有影响。但是不排除Navicat版本的特殊性。我在这里用的是Navicat12.1版本。
b.剩下的6.43%问题没有解决,可能是其他问题,一般按照以上方法做过之后,基本都会解决。其他问题请在博下留言或[email protected]
c.记得要把数据库和用户选择了。这里会导致权限等问题。
【Oracle】Navicat出现 ORA-24344: 成功, 但出现编译错误 的解决办法

【Oracle】Navicat出现 ORA-24344: 成功, 但出现编译错误 的解决办法
挚谢阅读。