我尝试使用SQL
执行INSERT
Toad for oracle
:
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语言参考手册。
行动:无
我该如何解决?
答案 0 :(得分:49)
您正在执行的声明有效。该错误似乎意味着Toad包含尾随分号作为命令的一部分,当它作为语句的一部分包含时会导致ORA-00911
- 因为它是客户端中的语句分隔符,而不是声明本身。
以下注释掉的行可能会让Toad感到困惑(as described here);或者可能是因为您尝试将所有内容作为单个语句运行,在这种情况下,您可以尝试使用运行脚本命令( F9 )而不是运行语句( F5 )。
只是删除注释掉的行会使问题消失,但是如果你还看到了实际的提交,那么你可能会使用错误的方法来运行语句。
有关Toad如何在评论on this related question中解析分号的更多信息,但我对Toad不太熟悉,无法详细了解。
答案 1 :(得分:6)
从查询内部删除分号(;),反引号(``)等
答案 2 :(得分:1)
如果在列或表的名称中使用$,_和#以外的特殊字符,则该名称必须用双引号括起来。 Link
答案 3 :(得分:1)
我最近遇到了同样的事情。这只是因为将脚本从文档复制到sql开发人员时的空格。我不得不删除空格并运行脚本。
答案 4 :(得分:1)
我遇到了同样的问题,这是由于行尾。我从另一个文件中复制过。 我把everythng放在同一条线上,然后再将它们分开并且有效。
答案 5 :(得分:1)
我正在使用执行Oracle SQL的第三方程序,但遇到此错误。在int n = snprintf(dest, len, "%d#", 123);
dest[n - 1] = dest[n - 2];
dest[n - 2] = '.';
声明之前,我有一些注释注释,其中包含特殊字符。删除评论即可解决问题。
答案 6 :(得分:1)
删除分号(;)。
在oracle中,当您直接在数据库上运行查询时,是否可以使用分号。但是,当您使用Java运行oracle查询时,必须在末尾删除分号。
答案 7 :(得分:0)
解决此Oracle错误的选项是:
选项1 当您尝试在SQL语句中使用特殊字符时,会发生此错误。如果在列或表的名称中使用了$,_和#以外的特殊字符,则该名称必须用双引号引起来。
选项2 如果您已将SQL从另一个程序粘贴到编辑器中,则可能会发生此错误。有时可能会出现不可打印的字符。在这种情况下,您应该尝试重新键入您的SQL语句,然后重新执行它。
选项3 当在SQL WHERE子句中使用特殊字符并且该值未用单引号引起来时,将发生此错误。
例如,如果您具有以下SQL语句:
选择*来自供应商 供应商名称=?;