刚接触数据库开发那会,最头疼的就是摸不透plsql如何执行sql语句,明明写好了代码,要么整片运行报错,要么单条语句没反应,白白浪费大半天调试时间。当时跟着网上零散的教程瞎操作,踩了一堆低级错误,慢慢磨出了适配PLSQL Developer的实操方式,没有花哨技巧,全是实打实能用的操作细节。
很多新手都会犯一个通病,打开PLSQL之后,直接在SQL窗口密密麻麻写一堆查询、新增、修改语句,然后直接点执行按钮,最后一堆报错弹窗跳出来。最开始我一直以为是自己的SQL语法写错了,反复核对标点、关键字,折腾半个多小时,愣是找不出问题在哪。
后来才反应过来,PLSQL默认会执行当前窗口内的全部SQL代码,多条未分隔、未选中的语句会一次性批量运行,一旦其中有一句语法错误、表名错误或者字段不匹配,整批执行都会直接终止,哪怕其他语句完全没问题,也全部失效。这也是新手调试屡屡失败的核心原因。
单次只执行单条SQL的操作特别简单,没有复杂步骤。只需要用鼠标,精准选中你想要运行的那一句完整SQL语句,不用多选多余字符,也不用少选关键字,选中完成后,点击编辑器上方的绿色执行三角按钮,或者直接按下快捷键F8,语句就会单独执行,结果会精准展示在下方的查询结果窗口里。
最容易被忽略的细节,就是SQL语句的分号分隔。之前经常出现选中语句执行没效果的情况,折腾好久才搞明白,每条独立的SQL语句末尾,必须加上英文分号收尾。没有分号的话,PLSQL无法识别语句的结束节点,会默认语句未写完,直接不执行,也不会弹出任何报错提示,让人摸不着头脑。
批量执行多条合规SQL的方式也很直观。如果有多条已经核对无误、互不冲突的查询语句,不需要逐句选中操作,直接不做任何鼠标选取,直接按下F8。软件会自动识别每一条带分号结尾的独立语句,从上到下依次批量执行,所有查询结果会分层展示在下方窗口里,效率会高很多。
还有一个极易踩的坑,就是区分SQL窗口和命令窗口。一开始分不清两个窗口的区别,把DDL建表语句、存储过程代码写在普通SQL窗口里执行,次次失败。
普通SQL窗口只适配查询、更新、删除、插入这类基础DML语句,运行速度快、结果直观。而建表、建索引、执行脚本这类结构化语句,必须切换到PLSQL的命令窗口运行。之前就是因为搞错窗口,反复修改代码,始终执行不成功,白白耽误了很多开发进度。
修改、删除、新增数据的执行,一定要多留个心眼。PLSQL执行完DML语句后,数据只是临时缓存,不会自动保存到数据库,必须手动点击提交按钮,或者输入commit语句执行,数据才会真正生效。我之前好几次执行完更新语句,刷新数据表发现数据没变,以为代码出错反复改写,最后才想起忘了提交事务。
调试出错的时候不用全盘推翻重写。只需要单独选中报错的单条语句执行,排查语法、字段、表权限问题,修改完毕单独执行测试,没问题之后,再整合所有语句批量运行。这种碎片化的调试方式,能直接规避批量执行的连锁报错问题,适配新手的操作节奏。
下班关软件的时候,看着编辑器里改好的SQL代码,终于不用再对着满屏报错发呆。那天晚上躺在床上,脑子里只剩一个简单的画面:选中、执行、提交,三步搞定所有常规SQL操作。