我尝试用Toad for oracle
执行一个SQL
INSERT
:
INSERT INTO GRAT_ACTIVITY
(UUID, IP_ADRESS, SEND_MAIL, DATE_CREA, DATE_UPD, CREATOR, CENTER, ETAT, REQUEST)
VALUES('555-vgd9-pllkd-5513', '172.12.23.130', 'N', SYSDATE, SYSDATE, '1554', 'M18', 'I', 8842);
--COMMIT;
GRAT_ACTIVITY
表结构如下:
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字符开头。$#_也允许出现在第一个字符之后。用双引号括起来的标识符可以包含双引号以外的任何字符。替代引号(q'# ...#')不能使用空格、制表符或回车符作为分隔符。有关所有其他上下文,请参阅SQL Language Reference Manual。
措施:无
我该怎么解决呢?
9条答案
按热度按时间pbgvytdp1#
您正在执行的语句有效。该错误似乎表示Toad将尾随分号作为命令的一部分包含在内,这在将其作为语句的一部分包含在内时确实会导致
ORA-00911
-因为它是客户端中的语句分隔符,而不是语句本身的一部分。可能是以下注解掉的行让Toad(as described here)感到困惑;也可能是因为您试图将所有内容作为单个语句运行,在这种情况下,您可以尝试使用run script命令(F9)而不是run语句(F5)。
仅仅删除注解掉的行就可以解决这个问题,但是如果您在实际提交中也看到了这个问题,那么很可能是您使用了错误的方法来运行语句。
关于Toad如何解析注解on this related question中的分号,还有更多信息,但我对Toad不够熟悉,无法详细介绍。
svmlkihl2#
删除分号(;)、倒勾号('')等
3xiyfsfu3#
删除分号(;).
在oracle中,当你直接在数据库上运行查询时,你可以使用分号。但是当你使用java来运行oracle查询时,你必须删除末尾的分号。
ezykj2lf4#
如果在列或表的名称中使用了除$、_和#以外的特殊字符,则必须用双引号将名称括起来。Link
fivyi3re5#
我使用的是执行Oracle SQL的第三方程序,遇到了此错误。在
SELECT
语句之前,我有一些包含特殊字符的注解。删除注解解决了此问题。qrjkbowd6#
我最近遇到了同样的事情。这只是由于空格时,复制脚本从一个文档到sql developer。我不得不删除空格和脚本运行。
w8ntj3qf7#
我遇到了同样的问题,这是由于行尾。我从另一个文档复制。我把所有的东西放在同一行,然后再次拆分它们,它的工作。
nfzehxib8#
解决此Oracle错误的选项包括:
选项#1当您试图在SQL语句中使用特殊字符时会发生此错误。如果在列或表的名称中使用了除$、_和#之外的特殊字符,则必须将名称括在双引号中。
Option #2如果您从其他程序将SQL语句粘贴到编辑器中,可能会发生此错误。有时可能会出现不可打印的字符。在这种情况下,您应该尝试重新键入SQL语句,然后重新执行它。
Option #3当SQL WHERE子句中使用了特殊字符,并且该值没有用单引号括起来时,就会发生此错误。
例如,如果您有以下SQL语句:
SELECT * FROM供应商WHERE供应商名称=?;
xoefb8l89#
你可能从另一个来源复制粘贴了SQL,不知怎么搞砸了一些东西...我不知道为什么,哈哈。
在您正在使用的任何IDE中重新键入sql,它应该可以工作。