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

Oracle 19c中如何让SQL*Plus的exec命令执行多行查询?

Oracle 19c 让EXEC支持多行查询的解决方法

问题原因

EXEC是SQL*Plus的简化命令,本质是BEGIN ... END;的缩写,它默认只能解析单行PL/SQL语句,换行后会被识别为新的独立命令,因此触发无效SQL语句错误。

解决方法

方法1:改用完整的BEGIN ... END;块(推荐)

直接用标准PL/SQL块包裹查询语句,天然支持多行书写:

variable max_id number;

BEGIN
  select 41
  into :max_id from dual;
END;
/

begin
dbms_output.put_line(:max_id);
dbms_output.put_line(:max_id+1);
end;
/

方法2:使用续行符

在SQL*Plus中,用连字符-作为续行符,将多行语句连接成单行逻辑:

variable max_id number;

exec select 41 -
into :max_id from dual;
    
begin
dbms_output.put_line(:max_id);
dbms_output.put_line(:max_id+1);
end;
/

方法3:开启SQLBLANKLINES参数

执行SET SQLBLANKLINES ON后,允许SQL语句包含空行,也能让EXEC正常处理多行语句:

SET SQLBLANKLINES ON;
variable max_id number;

exec select 41
into :max_id from dual;
    
begin
dbms_output.put_line(:max_id);
dbms_output.put_line(:max_id+1);
end;
/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 03:22:37