在使用 Oracle 10G 数据库时,我正在从 SQLDeveloper 切换到 DBeaver,并为数据库的确切版本使用 Oracle 即时客户端。
我不做脚本,只是一堆查询,比如选择、更新。我收集了它们,每行都在一行或几行,最后有分号,后面是两个破折号和注释。用于视觉分离的多行语句用许多破折号分隔。
SQLDeveloper 很好地处理了这样的系统,CTRL+Enter 仅执行该行(或从最后一个注释或分号到下一个分号的组),忽略前后的注释。所以我将整个集合从一个程序主窗口复制到另一个(SQL 编辑器)。使用结果很奇怪。
新 SQL 编辑器选项卡中的示例(表名已更改,如果我有一些保留字,请忽略):
select * from FILE_MOVEMENT where MOVEMENT_STATUS != 'MOVED' and LAST_UPDATE > sysdate -10 order by LAST_UPDATE desc;--My comment, explanation
select * from ACTIVITY where ACTIVITY_TYPE = 'GENERATOR' and STATUS = 'CREATED' and STARTED > sysdate -10 order by STARTED desc;--My other comment
第一个使用 CTRL+Enter 按预期执行,行开始以单个三角形闪烁,执行日志仅显示我的命令,直到分号。但是,当光标放在第二行,然后按 CTRL+Enter 时,我会在两行之前得到三角形,所有在第一行分号之后,直到第二行结束,包括两个注释都被选中并弹出 ORA-00911。所选文本显示在执行日志中。
如果我在它们之间放一个空行,那么整个第二行都会被选中并记录下来,并且会弹出相同的错误。
如何阻止这种行为并使第二行也以与第一行相同的方式执行 - 没有前一个和下一个评论?我错过了 DBeaver 中的某些语言或行尾或注释设置吗?