Sql 如何解决ORA-00911:无效字符错误?

Sql 如何解决ORA-00911:无效字符错误?,sql,oracle,toad,Sql,Oracle,Toad,我尝试使用Toad for oracle执行SQL插入: GRAT_活动表结构如下所示: CREATE TABLE CASH.GRAT_ACTIVITY ( UUID VARCHAR2(64 BYTE) NOT NULL, IP_ADRESS VARCHAR2(15 BYTE), SEND_MAIL VARCHAR2(1 BYTE), DATE_CREA DATE, DATE_UPD DATE, CREATOR VARCHAR2(4 BYTE)

我尝试使用Toad for oracle执行SQL插入:

GRAT_活动表结构如下所示:

CREATE TABLE CASH.GRAT_ACTIVITY
(
  UUID       VARCHAR2(64 BYTE) NOT NULL,
  IP_ADRESS  VARCHAR2(15 BYTE),
  SEND_MAIL  VARCHAR2(1 BYTE),
  DATE_CREA  DATE,
  DATE_UPD   DATE,
  CREATOR    VARCHAR2(4 BYTE),
  CENTER     VARCHAR2(4 BYTE),
  ETAT       VARCHAR2(1 BYTE),
  REQUEST    NUMBER
)
错误消息:

ORA-00911:无效字符

原因:标识符不能以字母和数字以外的任何ASCII字符开头。$\u也允许在第一次 性格用双引号括起来的标识符可以包含任何 双引号以外的字符。备选报价q'…' 不能使用空格、制表符或回车符作为分隔符。总的来说 其他上下文,请参阅SQL语言参考手册

行动:无


如何解决此问题?

如果列或表的名称中使用了除$,\uAND以外的特殊字符,则名称必须用双引号括起来。
您正在执行的语句是有效的。该错误似乎意味着Toad将尾随分号作为命令的一部分,当ORA-00911作为语句的一部分包含时,确实会导致ORA-00911,因为它是客户端中的语句分隔符,而不是语句本身的一部分

可能是以下注释掉的行使蟾蜍感到困惑;或者可能是因为您试图将所有内容作为一条语句运行,在这种情况下,您可以尝试使用run脚本命令F9而不是run语句F5

仅仅删除注释掉的行就可以解决问题,但是如果您在实际提交中也看到了这一点,那么很可能是您使用了错误的方法来运行语句


关于蟾蜍如何解析注释中的分号,还有更多的信息,但我对蟾蜍还不太熟悉,无法深入了解更多细节。

我最近也遇到了同样的情况。这只是因为将脚本从文档复制到sql developer时使用了空格。我必须删除空格,脚本才能运行。

我也遇到了同样的问题,这是由于行的末尾。我是从另一份文件中抄来的。
我将所有内容放在同一行,然后再次拆分它们,结果成功了。

删除分号;,从查询内部反勾选“`etc.

我正在使用执行Oracle SQL的第三方程序,我遇到了这个错误。在SELECT语句之前,我有一些注释,其中包括特殊字符。删除注释解决了问题。

解决此Oracle错误的选项有:

选择1 尝试在SQL语句中使用特殊字符时会发生此错误。如果列或表的名称中使用了除$、\和以外的特殊字符,则该名称必须用双引号括起来

选择2 如果您已从其他程序将SQL粘贴到编辑器中,则可能会发生此错误。有时可能存在不可打印的字符。在这种情况下,您应该尝试重新键入SQL语句,然后重新执行它

选择3 如果在SQL WHERE子句中使用特殊字符,并且该值未包含在单个引号中,则会发生此错误

例如,如果您有以下SQL语句:

从供应商中选择*
其中供应商名称=

删除分号


在oracle中,当您直接在DB上运行查询时,可以使用分号,也可以不使用分号。但是,当您使用java运行oracle查询时,必须删除结尾处的分号。

该语句很好。我似乎记得有些版本的蟾蜍被评论弄糊涂了;如果完全删除已注释的提交,是否有效?您是以语句还是脚本的形式运行?我使用SQL Plus而不是Toad执行DDL和DML时没有问题。您是否有可能从使用智能引号的地方复制了SQL,例如MS Word?任何时候都会出现此错误,而不是常规引号。只需手动重新编写查询即可。。它会给出错误,因为当您从skype或internet这样的地方复制查询时,会有一些额外的空间或spl。字符将被复制。它会出错。F9救了我一天!从问题中的DDL和DML来看,这里的情况并非如此。@erakm我没有使用任何特殊的caracterthink选项-2,它与我在回答中所写的链接相同。选项2:如果您已从其他程序将SQL粘贴到编辑器中,则可能会发生此错误。有时可能存在不可打印的字符。在这种情况下,您应该尝试重新键入SQL语句,然后重新执行它。@MichaelS.-你的答案比我能更详细地说明蟾蜍的运行命令,所以它可能是有用的,你可以考虑不删除它——我不认为它是偷猎*8。我有类似的问题,但是在SQL开发者上,我无法修复它,如果你能移除它,你能回答这个问题吗?从查询中修复了删除后的问题;从sql查询中,我修复了它。
CREATE TABLE CASH.GRAT_ACTIVITY
(
  UUID       VARCHAR2(64 BYTE) NOT NULL,
  IP_ADRESS  VARCHAR2(15 BYTE),
  SEND_MAIL  VARCHAR2(1 BYTE),
  DATE_CREA  DATE,
  DATE_UPD   DATE,
  CREATOR    VARCHAR2(4 BYTE),
  CENTER     VARCHAR2(4 BYTE),
  ETAT       VARCHAR2(1 BYTE),
  REQUEST    NUMBER
)