数据库存储过程编译出错 ORACLE 存储过程无法编译,编译就卡死
oracle\u5b58\u50a8\u8fc7\u7a0b\u63d0\u793a\u7f16\u8bd1\u5b8c\u6210\u4f46\u5b58\u5728\u9519\u8bef\uff0c\u5982\u4f55\u67e5\u770b\u9519\u8bef1\u3001\u9996\u5148\u6253\u5f00PL/SQL Developer\u8f6f\u4ef6\uff0c\u65b0\u5efasql\u7a97\u53e3\u3002
2\u3001\u6253\u5f00\u4fee\u6539oracle\u5b58\u50a8\u8fc7\u7a0b\uff0c\u8be5\u5b58\u50a8\u8fc7\u7a0b\u6709\u4e00\u4e2a\u8f93\u5165\u53c2\u6570\uff08pid\uff09\u8ddf\u4e00\u4e2a\u8f93\u51fa\u53c2\u6570(name)\uff0c\u5373\u901a\u8fc7\u7528\u6237id\u67e5\u8be2\u7528\u6237\u540d\u79f0\u5e76\u5c06\u540d\u79f0\u8fd4\u56de\u3002
3\u3001\u8c03\u8bd5\u5b58\u50a8\u8fc7\u7a0b\uff0c\u627e\u5230\u521a\u521a\u4fee\u6539\u7684\u5b58\u50a8\u8fc7\u7a0b\u53f3\u51fb\u5e76\u70b9\u51fb\u3010test\u3011\u9009\u9879\u3002
4\u3001\u5728\u6253\u5f00\u7684\u7a97\u53e3\u5185\u4fee\u6539id\u503c\u5e76\u70b9\u51fb\u5de6\u4e0a\u89d2\u7684\u5012\u4e09\u89d2\u5f62\u56fe\u6807\u5f00\u59cb\u8c03\u8bd5\u3002\u6309\u3010CTRL+N\u3011\u8fdb\u884c\u5355\u6b65\u8fdb\u5165\u8c03\u8bd5\uff0c\u3010CTRL+O\u3011\u5355\u6b65\u8c03\u8bd5\uff0c\u3010CTRL+T\u3011\u9000\u51fa\u8c03\u8bd5\uff0c\u4e5f\u53ef\u4ee5\u70b9\u51fb\u8c03\u8bd5\u5de5\u5177\u8fdb\u884c\u8c03\u8bd5\u3002
5\u3001\u53d8\u91cf\u67e5\u770b\uff0c\u5728\u7a97\u53e3\u4e0b\u65b9\u53ef\u8f93\u5165\u53d8\u91cf\u540d\u79f0\u89c2\u5bdf\u53d8\u91cf\u7684\u53d8\u5316\u60c5\u51b5\u3002
6\u3001\u8c03\u8bd5\u5b8c\u6210\u540e\u5c31\u53ef\u4ee5\u68c0\u67e5\u8c03\u8bd5\u7ed3\u679c\uff0c\u53ef\u4ee5\u5728\u8c03\u8bd5\u7ed3\u679c\u4e2d\u67e5\u770b\u9519\u8bef\u3002
\u4f60\u600e\u4e48\u67e5\u7684\u9501\uff1fv$locked_object?dba_ddl_locks\u67e5\u4e86\u6ca1\uff0c\u53ef\u80fd\u662fddl\u7684\u9501\uff0c\u5982\u679c\u4e0d\u80fd\u7f16\u8bd1\uff0c\u4e00\u7f16\u8bd1\u5c31\u6b7b\uff0c\u4e5f\u53ef\u80fd\u662fddl\u7684\u9501\u5bfc\u81f4\u7684\uff0c\u4ee5\u524d\u78b0\u5230\u8fc7\u3002\u5982\u679c\u80fd\u627e\u5230\u9501\uff0c\u90a3\u5c31\u7b80\u5355\u4e86\u3002
\u4e0d\u8fc7\u8fd8\u78b0\u5230\u8fc7\u4e00\u79cd\u7279\u522b\u626f\u6de1\u7684\u60c5\u51b5\uff0c\u5173\u6389\u81ea\u5df1\u7684\u8fde\u63a5\uff0c\u7136\u540e\u6362\u4e00\u53f0\u7535\u8111\u4ece\u65b0\u6765\u8fc7\uff0c\u5c31OK\u4e86\uff0c\u8fd9\u79cd\u60c5\u51b5\u4e5f\u78b0\u5230\u8fc7\u3002
可用第三方工具检查错误。
如以下存储过程:
其中第六行故意少写了一个分号。
然后执行后,会提示完成,这时可以去左边的树中找到这个存储过程,显示是有个红叉的。
这时,可以右键,选择编辑。然后打开页面的最下方会显示如下信息。
此时鼠标双击信息的那一行,会在上方存储过程中以特殊颜色显示,这就说明,有特殊颜色的位置有错误,可以根据ORA-00933的错误号查询错误原因,并加以修改。现在,如果可以后边的逗号补上,点执行,然后,下边会显示成功编译且左边的树红叉消除。
绛旓細姝ゆ椂榧犳爣鍙屽嚮淇℃伅鐨勯偅涓琛岋紝浼氬湪涓婃柟瀛樺偍杩囩▼涓互鐗规畩棰滆壊鏄剧ず锛岃繖灏辫鏄庯紝鏈夌壒娈婇鑹茬殑浣嶇疆鏈夐敊璇锛屽彲浠ユ牴鎹甇RA-00933鐨勯敊璇彿鏌ヨ閿欒鍘熷洜锛屽苟鍔犱互淇敼銆傜幇鍦紝濡傛灉鍙互鍚庤竟鐨勯楀彿琛ヤ笂锛岀偣鎵ц锛岀劧鍚庯紝涓嬭竟浼氭樉绀烘垚鍔熺紪璇戜笖宸﹁竟鐨勬爲绾㈠弶娑堥櫎銆
绛旓細1銆佹墦寮mysql鐨勫鎴风绠$悊杞欢锛屾壘鍒版兂瑕佸垱寤瀛樺偍杩囩▼鐨鏁版嵁搴锛屽湪銆怱tored Procedures銆戣彍鍗曚笂鐐瑰嚮榧犳爣鍙抽敭锛岄夋嫨銆怌reate Stored Procedure銆戣彍鍗曢」銆2銆佺偣鍑讳箣鍚庯紝鍙充晶浼氬嚭鐜颁竴涓瓨鍌ㄨ繃绋嬬紪杈戠晫闈紝骞朵笖浼氭湁榛樿鐨勫垱寤哄瓨鍌ㄨ繃绋嬬殑鍩烘湰缁撴瀯銆3銆佸湪CREATE PROCEDURE鍚庨潰鐨勬槸瀛樺偍杩囩▼鐨勫悕瀛楋紝鍙互鏀规垚鍠滄鐨勪换浣曞悕...
绛旓細Create Or Replace Procedure Insertpointdata(Jl_Pointid In Varchar2,Jl_Pointname In Varchar2,Jl_Pointtype In Varchar2,Jl_Videoip In Varchar2,Jl_Metertype In Varchar2,Jl_Status Out Integer,Jl_Hint Out Varchar2) Is Pointid Varchar2(88);Pointname Varchar2(30);Poin...
绛旓細璇硶鏈夐棶棰樼▼搴忕紪璇戦兘杩囦笉鍘伙紝绋嬪簭鏃犳硶杩愯浣曟潵瀛樺偍杩囩▼鍋滄帀锛闄ら潪鏄昏緫閿欒鎴栬呮暟鎹紓甯稿紩璧烽敊璇銆傚鏋滀綘鍔犱笂浜嗗紓甯稿鐞嗗姛鑳斤紝鍙互鎹曟崏鍒伴敊璇紝涓嶈嚦浜庝娇绋嬪簭鍋滄杩愯銆傚鏋滄病鏈夊紓甯稿鐞嗭紝绋嬪簭涓瀹氫細鍋滄杩愯锛屽苟鏄剧ず鐩稿叧鐨勯敊璇俊鎭
绛旓細鏄墽琛屽埌鍝彞閿欎簡锛熻繕鏄缂栬瘧灏辨病杩囷紵
绛旓細鍥炵瓟锛氫綘鐨勮繖鏍瀛樺偍杩囩▼鏄纭殑鍢,鎴戜篃娴嬭瘯浜,娌℃湁閿欒銆備綘鐢ㄤ粈涔堝伐鍏峰悧?鏄笉鏄笉鏄敤鐨刣baccess?
绛旓細浣滀负绗竴涓弬鏁帮紝涔熷皢NEWID()涔熸斁鍏瀛樺偍杩囩▼璇曡瘯銆備笅闈㈡槸sql甯姪涓殑璇存槑:SQL鍑芥暟涓笉鑳戒娇鐢ㄢ滀笉纭畾鍑芥暟鈥濓紝鍙鏄瘡娆℃墽琛岄兘杩斿洖涓嶅悓缁撴灉鐨勫嚱鏁伴兘鏃犳硶浣跨敤锛岃繖浜涒滀笉纭畾鍑芥暟鈥濅細瀵艰嚧鑷畾涔夌殑鍑芥暟涔熷彉寰椾笉纭畾锛岃孲QL涓嶆敮鎸佺敤鎴风紪鍐欌滀笉纭畾鍑芥暟鈥濄
绛旓細鏃犳晥鐘舵佹湁涓ょ鍙兘,涓绉嶆槸浣犵殑瀛樺偍杩囩▼缂栬緫娌℃湁鎴愬姛,鍒涘缓浜,浣嗛噷闈㈡湁璇硶閿欒銆傝繕鏈変竴绉嶆槸瀛樺偍杩囩▼浣跨敤鐨勮〃鏈夌粨鏋勪笂鐨勬敼鍙,闇瑕侀噸鏂缂栬瘧涓涓嬨備綘閲嶆柊缂栬瘧涓涓,濡傛灉涓嶆垚鍔,灏辨槸鏈夎娉曢棶棰,浣犻渶瑕佷慨鏀瑰瓨鍌ㄨ繃绋嬨 鏈洖绛旂敱鎻愰棶鑰呮帹鑽 涓炬姤| 绛旀绾犻敊 | 璇勮(1) 11 5 ...
绛旓細缂栬瘧璀﹀憡涓鑸槸鎸瀛樺偍杩囩▼锛岃鍥句粈涔堢殑鑴氭湰鍑虹幇闂锛屼笉鐭ラ亾浣犵殑瀵煎叆鏃跺熀浜庣敤鎴风殑杩樻槸鍏ㄥ簱鐨勶紝浣犻渶瑕佹煡鐪嬪嚭闂鐨凮BJECT锛岀湅鐪嬫槸鎶ョ殑浠涔堥敊锛屾湁鍙兘鏄熀浜嶥B_LINK鐨閿欒锛屼篃鏈夊彲鑳芥槸璋冪敤浜嗗叾浠栫敤鎴风殑琛ㄦ垨瑙嗗浘锛岃屼綘杩欎竴娆″鍏ョ殑鏃跺欓仐婕忎簡
绛旓細涓浜汷RACLE涓殑杩涚▼琚潃鎺夊悗锛岀姸鎬佽缃负"killed"锛屼絾鏄攣瀹氱殑璧勬簮寰堥暱鏃堕棿涓嶉噴鏀撅紝鏈夋椂瀹炲湪娌″姙娉曪紝鍙ソ閲嶅惎鏁版嵁搴銆傜幇鍦ㄦ彁渚涗竴绉嶆柟娉曡В鍐宠繖绉嶉棶棰橈紝閭e氨鏄湪ORACLE涓潃涓嶆帀鐨勶紝鍦∣S涓绾у啀鏉銆1.涓嬮潰鐨勮鍙ョ敤鏉ユ煡璇㈠摢浜涘璞¤閿侊細select object_name,machine,s.sid,s.serial from v$locked_object l...