You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Developer运行教程代码报错PLS-00103及运行菜单灰化问题咨询

问题排查解决方案

问题1:PLS-00103 报错解决

报错的核心原因是你将SQLPlus客户端命令和PL/SQL存储过程定义放在同一个PL/SQL执行块中运行,SET SERVEROUTPUT ON是SQL Developer/SQLPlus的客户端控制命令,不属于PL/SQL语法,PL/SQL编译器将其识别为存储过程的一部分就会报语法错误。
你只需要在存储过程定义的末尾添加/作为PL/SQL块的结束分隔符,拆分不同执行单元即可,修正后的可运行代码如下:

create or replace PROCEDURE proc1 (
    emp_id IN NUMBER
) IS
    emp_fname VARCHAR2(50);
BEGIN
    SELECT
        first_name
    INTO emp_fname
    FROM
        employees
    WHERE
        employee_id = emp_id;

    dbms_output.put_line('Employee name is: ' || emp_fname);
END;
/ -- 存储过程定义结束分隔符

SET SERVEROUTPUT ON

EXEC proc1(100)

补充说明:讲师运行无问题是因为其客户端配置为按语句自动分割执行,不需要显式写分隔符,全选批量执行的场景下必须添加分隔符区分不同执行单元。

问题2:SQL Developer运行菜单灰化解决

按优先级从高到低排查如下:

  • 确认当前工作表已绑定有效连接:查看工作表右上角的连接下拉框,确认已选中指向Oracle 19c虚拟机的已激活连接,若连接断开需要先重连。
  • 确认已选中要执行的代码段:部分版本的SQL Developer在未选中任何代码时会默认灰化运行相关菜单,手动拖动选中需要执行的语句即可恢复菜单可用状态。
  • 检查版本兼容性:确认你使用的SQL Developer版本适配Oracle 19c,且客户端设备上的JDK版本符合当前SQL Developer的运行要求,版本不兼容会导致UI功能异常。
  • 重置工作表:关闭当前异常的工作表,通过已连接的数据库实例新建工作表,重新输入代码测试即可。

调试功能前置要求:上述问题解决后如果要使用单步调试,需要先给当前数据库用户授予DEBUG CONNECT SESSION、DEBUG ANY PROCEDURE权限,同时确认虚拟机的数据库监听端口未被防火墙拦截。

内容的提问来源于stack exchange,提问作者everwisher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:15:05