plsql如何执行sql语句:分窗口实操执行各类SQL语句

plsql如何执行sql语句:分窗口实操执行各类SQL语句

刚接触数据库运维的时候,最头疼的就是摸不清门路,对着PLSQL客户端手足无措,搞不懂plsql如何执行sql语句,每次写好代码要么运行没反应,要么直接报错,白白浪费大把的工作时间。那阵子接手老旧数据库的日常维护,批量查询、更新数据的需求特别多,全靠一点点实操试错,才摸透了PLSQL执行SQL的完整实操逻辑。

很多新手会下意识把所有SQL语句都塞到同一个窗口运行,这是最容易翻车的操作。最开始我也是这么做的,写完查询、新增、修改语句就直接点运行,经常出现语句不执行、数据错乱、事务卡死的问题,折腾好久才搞明白,PLSQL不同类型的SQL语句,对应的执行窗口和操作方式完全不一样,不能一概而论。

日常用得最多的就是SQL查询语句,SELECT查询类代码是最简单、零风险的执行类型。打开PLSQL Developer后,点击顶部菜单栏的文件,新建一个SQL窗口,把编写好的查询语句粘贴或者输入进去。不需要多余的配置,直接按下F8快捷键,或者点击窗口上方的绿色执行按钮,底部就会立刻弹出数据结果集,字段、数据条数、查询内容一目了然。这种方式只适用于查询语句,不会修改数据库任何数据,随便测试完全没问题。

很多人不知道PLSQL还有命令窗口,这是执行DML、DDL修改类SQL语句的核心窗口。之前踩过一个大坑,在普通SQL窗口执行UPDATE、DELETE更新语句,执行之后看着界面没报错,以为数据已经修改成功,结果后台数据库数据毫无变化。反复核对代码语法,折腾了半个多小时都没找到问题。

后来才反应过来,普通SQL窗口执行增删改语句,只会模拟运行,不会真正提交事务,所有修改都停留在临时会话层面。想要真实修改数据库数据,必须新建命令窗口,在命令窗口内执行所有更新、删除、新增、建表、改字段等操作。语句输入完成后,同样按F8执行,执行完毕后一定要手动输入COMMIT; 回车提交事务,不然断开连接后,所有操作都会自动失效,等于白做。

还有一种特殊场景,批量执行多条独立的SQL语句,多条语句直接堆砌在一起运行大概率会报错。之前批量插入几十条数据,全部写在同一行、同一段代码里,执行后直接报语法错误,排查了很久才发现,PLSQL单次批量执行,每条独立SQL语句末尾必须加分号结尾。每条语句以;分隔,分行书写,再统一F8执行,就能一次性全部运行成功,不会出现语句冲突、截断报错的情况。

偶尔会遇到SQL语句执行卡顿、一直加载的情况。刚开始遇到这种情况,只会傻傻等着,不知道怎么处理。后来实操多了才发现,大多是因为之前的事务没有提交,锁住了数据表。不用重启客户端,直接在命令窗口输入ROLLBACK; 回滚未完成事务,清空锁定状态,再重新执行SQL语句,就能恢复正常运行。

很多新手分不清两个窗口的区别,总觉得操作繁琐。其实根本不用死记规则,记住最简单的实操逻辑就行:只查数据用SQL窗口,改数据、改表结构全部用命令窗口,执行修改语句必加手动提交。

那天加班处理完一批数据批量更新,关掉PLSQL之后,桌面还停留在命令窗口的页面,光标停在空白的输入行上。