致Navicat以及使用该工具的Oracle新手数据库
——存储过程在PL/SQL中可以执行成功,在Navicat中却不行。工具
学习和应用Oracle数据以来,我一直是使用PL/SQL的,使用得还算比较熟练。但随着Navicat相关功能的成熟和它的一些好的工具,已经在数据库工做人员中被普遍接受。数年后再次回归数据库行业,使用起这个软件来开始也甚是满意,但随着逐渐的深刻,就发现问题多多了。今天就遇到的几个问题说说吧!我是个喜欢追根究底的人,找到问题的缘由,花了很多时间。学习
使用Navicat进行存储过程建立时,若是报错,你是没法像PL/SQL中用show errors;命令来查看到底错在哪里的。还有就是一个存储过程,把脚本放到PL/SQL中能够很顺序的建立成功,但在Navicat中,你获得的永远是:”[Err] ORA-24344: success with compilation error”测试
下面是一段测试代码,spa
CREATE OR REPLACEblog
PROCEDURE TEST_PROC (开发
VERSION_VAL VARCHAR2rem
) ISit
MIDDLE_VERSION D_VERSION.VERSION_VALUE%TYPE;io
MAX_SUB_VERSION D_VERSION.SUB_VERSION%TYPE;
record_num NUMBER;
BEGIN
record_num:=0;
MAX_SUB_VERSION:=0;
IF (record_num=0) THEN
MIDDLE_VERSION:='M';
DBMS_OUTPUT.PUT_LINE('MIDDLE_VERSION: '||MIDDLE_VERSION);
ELSE
MIDDLE_VERSION:='M2';
DBMS_OUTPUT.PUT_LINE('MIDDLE_VERSION: '||MIDDLE_VERSION);
END IF;
END;
将上面的代码分别复制PL/SQL和Navicat中进行执行,获得的结果大相径庭,以下图:
问题到底出在哪里呢?
根据我打到的方法获得出的问题所在点以下图所示:
意外吧!好多错误啊!怎么可能!什么错误啊!
朋友,其实不是你的错!是Navicat的错!但好像也不是他的错!Navicat开发人员的错吧!
咱们看看是怎么知道这里有错的。首先你得找到这样一个路径:“D:\Documents\Navicat\Premium\logs”找到“LogHistory.log”这样一个文件:
若是你执行出现上面的报错了,之后就要养成习惯,时不时“宠幸”一下它!拉到最下面去看看,会有什么(记住:执行一次要立马打开,执行一次,打开一次,要否则就跑远了,你得找一会的哦):
看到图中的箭头没有,位置是否是很眼熟。没错,前面一张图中标记了的地方,在LogHistory.log中记录的提交给Oracle的命令中都出现错误了。问题在哪里呢?
问题在如下两点:
一、 Navicat不怎么认得“换行符”。解决办法,以上几个地方记得多打几个空格。
二、 Navicat喜欢穿开档裤。最后的“END;”一任性它就扔掉。怎么解决。解决办法以下图:
简不简单?不知道的话!你要急死!
但愿Navicat开发组可以尽快解决这个问题吧!或许更新的版本的已经解决,只是我使用的版本过低吧!那至少让一些一样使用比较低版本的同行新手们少一些莫名其妙的烦恼吧!
Navicat这个工具上存在的问题确定还有不少,上面的发现不必定都指出来了,仍是得多分析吧!好在指出了一个方法,你们共享之!