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
相关产品推荐
相关产品推荐

