在PLSQL Developer中,命令窗口(Command Window)是一个强大的工具,主要用于执行SQL语句、PL/SQL代码块、脚本文件以及进行数据库管理操作,相较于SQL窗口,命令窗口更接近命令行操作模式,支持批量执行、变量绑定、脚本导入导出等功能,特别适合自动化任务和复杂操作,以下是命令窗口的详细使用方法,从基础操作到高级功能逐步展开。

命令窗口的打开与界面布局
打开方式
- 菜单栏路径:点击顶部菜单栏的“文件(File)”→“新建(New)”→“命令窗口(Command Window)”,或直接使用快捷键
Ctrl+N,在弹出的窗口类型中选择“Command Window”。 - 工具栏按钮:在工具栏中找到带“>”图标的按钮(通常标注“Command Window”),点击即可快速打开。
- 右键菜单:在对象浏览器(Browser)中选中数据库对象(如表、存储过程),右键选择“命令窗口(Command Window)”,命令窗口会自动加载与该对象相关的操作模板。
界面布局
命令窗口主要分为三个区域:
- 输入区(Input Area):位于窗口上半部分,用于输入SQL语句、PL/SQL代码或命令,支持多行输入,可通过
Ctrl+Enter换行。 - 输出区(Output Area):位于窗口下半部分,显示执行结果、错误信息、输出变量值等,默认自动滚动,可通过“查看(View)”菜单中的“锁定输出(Lock Output)”固定显示内容。
- 状态栏(Status Bar):位于窗口底部,显示当前数据库连接名称、执行状态(如“就绪”“执行中”)及耗时信息。
基础操作:执行SQL与PL/SQL代码
执行简单SQL语句
在输入区输入标准SQL语句(如查询、更新、删除),点击工具栏的“执行(Execute)”按钮(或按F8),结果会在输出区显示。
示例:
SELECT empno, ename, sal FROM emp WHERE deptno = 10;
执行后,输出区会以表格形式返回查询结果,若语句有误(如表名不存在),输出区会显示红色错误提示,如“表名无效: ’emp’”。
执行PL/SQL代码块
PL/SQL代码块(如声明、执行部分、异常处理)需在输入区完整输入,通过F8或“执行”按钮运行。
示例(输出员工工资总和):
DECLARE
v_total_sal NUMBER;
BEGIN
SELECT SUM(sal) INTO v_total_sal FROM emp;
DBMS_OUTPUT.PUT_LINE('员工工资总和: ' || v_total_sal);
END;
注意:需确保输出区已启用DBMS_OUTPUT,否则看不到结果,启用方法:在输入区执行SET SERVEROUTPUT ON SIZE 1000000;(SIZE参数设置输出缓冲区大小,单位为字节)。
高级功能:变量绑定与脚本操作
变量绑定(替代变量)
命令窗口支持使用&或&&定义替代变量,运行时弹出输入框让用户动态赋值,适合参数化查询。
- 单次绑定(&):每次执行时均提示输入值。
示例:SELECT * FROM emp WHERE empno = &emp_id;
执行后弹出对话框:“请输入 emp_id 的值:”,输入“7788”后查询员工编号为7788的信息。

- 多次绑定(&&):首次执行时提示输入,后续执行直接使用上次赋值,直至会话结束。
示例:SELECT &&col_name FROM emp WHERE rownum < 5;
首次执行提示输入列名(如“ename”),后续执行直接使用“ename”列。
脚本文件导入与导出
命令窗口支持批量执行脚本文件(.sql后缀),适合复杂操作或自动化任务。
- 导入脚本:
方法1:在输入区执行@脚本路径(如@C:tempupdate_emp.sql),需确保路径正确且文件存在。
方法2:点击菜单“文件(File)”→“打开(Open)”,选择.sql将加载到输入区,按F8执行。 - 导出脚本:选中输入区需要保存的代码,点击“文件(File)”→“保存(Save)”,选择保存路径并命名为
.sql文件。
示例脚本(update_emp.sql):
-- 更新部门10的员工工资,增加10% UPDATE emp SET sal = sal * 1.1 WHERE deptno = 10; COMMIT;
在命令窗口执行@update_emp.sql后,部门10所有员工工资将上调10%,并自动提交事务。
输出控制与错误处理
输出格式控制
通过SET命令可调整输出格式,提升结果可读性:
SET LINESIZE 200;:设置每行显示字符数(默认80)。SET PAGESIZE 50;:设置每页显示行数(默认14)。SET COLSEP '|';:设置列分隔符(默认为空格)。
示例:SET LINESIZE 200; SET PAGESIZE 20; SELECT empno | ename | job FROM emp;
输出结果将以“|”分隔列,每行显示200字符。
错误处理与调试
- 查看错误信息:执行失败时,输出区会显示错误代码、错误位置及描述(如“ORA-00904: ’emp’ 无效标识符”)。
- 调试PL/SQL块:通过
DBMS_OUTPUT.PUT_LINE输出中间变量值,定位问题。
示例(调试块):DECLARE v_empno NUMBER := &input_empno; v_ename VARCHAR2(50); BEGIN SELECT ename INTO v_ename FROM emp WHERE empno = v_empno; DBMS_OUTPUT.PUT_LINE('员工姓名: ' || v_ename); EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('员工编号不存在: ' || v_empno); END;若输入的
empno不存在,会触发NO_DATA_FOUND异常,输出提示信息。
事务管理与数据库操作
事务控制
命令窗口支持手动提交或回滚事务,默认情况下,DML语句(INSERT/UPDATE/DELETE)执行后需手动提交(COMMIT;),否则不会持久化到数据库。
COMMIT;:提交当前事务,保存修改。ROLLBACK;:回滚当前事务,撤销未提交的修改。SAVEPOINT sp1;:设置保存点,后续可通过ROLLBACK TO sp1;回滚到指定点。
数据库连接管理
- 切换连接:通过菜单“文件(File)”→“切换连接(Connect)”选择已保存的数据库连接,或新建连接。
- 查看当前连接:执行
SHOW USER;显示当前登录用户,执行SELECT * FROM v$instance;查看数据库实例信息。
命令窗口与SQL窗口的功能对比
为更清晰区分两者的使用场景,以下通过表格对比主要功能:
| 功能点 | 命令窗口 | SQL窗口 |
|---|---|---|
| 执行方式 | 支持批处理、变量绑定、脚本文件 | 单行/多行执行,不支持脚本文件导入 |
| 输出控制 | 可通过SET命令自定义格式、缓冲区大小 |
自动格式化输出,不支持自定义分隔符 |
| 变量绑定 | 支持&和&&替代变量 |
不支持,需硬编码参数 |
| 事务管理 | 支持手动COMMIT/ROLLBACK |
自动提交(默认),不支持手动控制 |
| 调试功能 | 支持DBMS_OUTPUT,适合复杂块调试 |
支持断点调试,适合单步执行PL/SQL块 |
| 适用场景 | 批量操作、自动化脚本、参数化查询 | 简单查询、单步调试、对象管理操作 |
相关问答FAQs
问题1:命令窗口执行脚本时提示“未找到文件”,如何解决?
解答:
该错误通常由脚本路径错误或文件权限问题导致,解决方法:
- 检查路径:确保
@脚本路径中的路径正确,支持绝对路径(如@C:tempscript.sql)和相对路径(如@script.sql,需在PLSQL Developer工作目录下)。 - 检查文件名:确认文件名后缀为
.sql,且文件未被其他程序占用。 - 使用
START命令替代:若路径含空格,可用START 'C:tempscript with space.sql'(注意单引号包裹路径)。 - 验证文件权限:确保当前系统用户对脚本文件有读取权限。
问题2:如何在命令窗口中查看PL/SQL块的执行计划,以便优化SQL性能?
解答:
通过EXPLAIN PLAN FOR命令生成执行计划,再查询PLAN_TABLE表获取详细信息,步骤如下:
- 生成执行计划:在输入区执行
EXPLAIN PLAN FOR [SQL语句],EXPLAIN PLAN FOR SELECT * FROM emp WHERE sal > 3000;
- 查看执行计划:执行以下查询获取可视化计划:
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
输出区会显示SQL的执行路径、访问方式(如全表扫描、索引扫描)、成本估算等信息。
- 分析计划:重点关注“Operation”列(如“TABLE ACCESS FULL”表示全表扫描,“INDEX RANGE SCAN”表示索引范围扫描),若存在全表扫描且数据量大,可考虑添加索引或优化WHERE条件。
通过执行计划,可定位SQL性能瓶颈,针对性优化查询效率。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/14206.html