DBeaver 简单查询 ORA-00911 无效字符

Posted

技术标签:

【中文标题】DBeaver 简单查询 ORA-00911 无效字符【英文标题】:DBeaver simple query ORA-00911 invalid character 【发布时间】:2016-01-21 07:36:29 【问题描述】:

在我使用 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 时,我会在两行之前得到三角形,在第一行分号之后,直到第二行结束,包括两个 cmets 都被选中并弹出 ORA-00911。所选文本显示在执行日志中。

如果我在它们之间放一个空行,那么整个第二行都会被选中并记录下来,并且会弹出同样的错误。

如何阻止这种行为并使第二行也以与第一行相同的方式执行 - 没有前一个和下一个注释?我错过了 DBeaver 中的某些语言或行尾或注释设置吗?

【问题讨论】:

HeidiSQL 也有类似的烦人行为。您能否先让我们知道每个查询将独立执行,一次一个? 尽量不要将 cmets 放在分号之后。将 cmets 放在语句之前。我不知道 DBeaver 如何处理这些语句,但我知道至少有一个其他工具无法正确执行此类语句。 第一个将给出所有未以正确状态结束的动作以及最后一次状态更改的时间。所以我可以看看是否有我需要做的动作。第二个实际上是相同的,但对于其他活动类型,创建的状态应该已更改为已完成。所以我可以看看那些。 【参考方案1】:

几乎没有最新版本的 DBeaver 可以接受。即使前几行注释出现在要执行的语句中,它仍按预期运行。执行了正确的语句,日志显示注释作为查询的开始,但它被忽略了。我可以忍受。

【讨论】:

【参考方案2】:

Dbeaver 使用 Ctrl+Enter 快捷键来执行单个语句,执行多个语句你应该使用 Alt+X。

【讨论】:

以上是关于DBeaver 简单查询 ORA-00911 无效字符的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00911: 无效字符 00911. 00000 - Oracle 中出现“无效字符”异常错误

ORA-00911: C# 中的无效字符

java.sql.SQLException: ORA-00911: 无效字符

Mybatis 批量更新 ORA-00911: 无效字符的错误

在线急等!ORA-00911:无效字符

我的无效字符在哪里 (ORA-00911)