如何解决 ORA-00911: invalid character 错误?
How can I solve ORA-00911: invalid character error?
我试图用 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
table结构如下:
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: invalid character
Cause: identifiers may not start with any ASCII character other than letters and numbers. $#_ are also allowed after the first
character. Identifiers enclosed by doublequotes may contain any
character other than a doublequote. Alternative quotes (q'#...#')
cannot use spaces, tabs, or carriage returns as delimiters. For all
other contexts, consult the SQL Language Reference Manual.
Action: None
我该如何解决?
如果列名或table中使用了$、_、#以外的特殊字符,则必须用双引号括起来。
Link
您正在执行的语句有效。该错误似乎意味着 Toad 将尾随分号作为命令的一部分包含在内,当它作为语句的一部分包含时确实会导致 ORA-00911
- 因为它是客户端中的语句分隔符,而不是语句本身。
可能是以下注释掉的行让 Toad 感到困惑 (as described here);或者可能是因为您试图将所有内容 运行 作为单个语句,在这种情况下,您可以尝试使用 运行 脚本命令 (F9)而不是 运行 语句 (F5).
只需删除注释掉的行即可使问题消失,但如果您在实际提交中也看到了这一点,则很可能是您对 运行 语句使用了错误的方法。
关于 Toad 如何解析评论中的分号的更多信息 on this related question,但我对 Toad 不够熟悉,无法深入了解更多细节。
我最近遇到了同样的事情。这只是由于将脚本从文档复制到 sql 开发人员时出现空格。我不得不删除空格和脚本 运行.
我有同样的问题,这是由于线路结束。我是从另一个文件复制过来的。
我把所有东西都放在同一条线上,然后再次拆分它们,它起作用了。
从查询中删除分号 (;)、反引号 (``) 等
我正在使用执行 Oracle SQL 的第 3 方程序,我遇到了这个错误。在 SELECT
声明之前,我有一些包含特殊字符的注释。删除评论解决了问题。
解决此 Oracle 错误的选项是:
选项#1
当您尝试在 SQL 语句中使用特殊字符时会发生此错误。如果列名或table中使用了$、_、#以外的特殊字符,则必须用双引号括起来。
选项#2
如果您从另一个程序将 SQL 粘贴到您的编辑器中,则可能会发生此错误。有时可能会出现非 printable 字符。在这种情况下,您应该尝试重新输入 SQL 语句,然后重新执行它。
选项#3
当在 SQL WHERE 子句中使用特殊字符并且值未包含在单引号中时,会发生此错误。
例如,如果您有以下 SQL 语句:
SELECT * 来自供应商
其中 supplier_name = ?;
删除分号 ( ; )。
在oracle中,直接在DB上查询时,可以使用分号也可以不使用分号。但是当你使用 java 到 运行 一个 oracle 查询时,你必须在最后删除分号。
我试图用 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
table结构如下:
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: invalid character
Cause: identifiers may not start with any ASCII character other than letters and numbers. $#_ are also allowed after the first character. Identifiers enclosed by doublequotes may contain any character other than a doublequote. Alternative quotes (q'#...#') cannot use spaces, tabs, or carriage returns as delimiters. For all other contexts, consult the SQL Language Reference Manual.
Action: None
我该如何解决?
如果列名或table中使用了$、_、#以外的特殊字符,则必须用双引号括起来。 Link
您正在执行的语句有效。该错误似乎意味着 Toad 将尾随分号作为命令的一部分包含在内,当它作为语句的一部分包含时确实会导致 ORA-00911
- 因为它是客户端中的语句分隔符,而不是语句本身。
可能是以下注释掉的行让 Toad 感到困惑 (as described here);或者可能是因为您试图将所有内容 运行 作为单个语句,在这种情况下,您可以尝试使用 运行 脚本命令 (F9)而不是 运行 语句 (F5).
只需删除注释掉的行即可使问题消失,但如果您在实际提交中也看到了这一点,则很可能是您对 运行 语句使用了错误的方法。
关于 Toad 如何解析评论中的分号的更多信息 on this related question,但我对 Toad 不够熟悉,无法深入了解更多细节。
我最近遇到了同样的事情。这只是由于将脚本从文档复制到 sql 开发人员时出现空格。我不得不删除空格和脚本 运行.
我有同样的问题,这是由于线路结束。我是从另一个文件复制过来的。 我把所有东西都放在同一条线上,然后再次拆分它们,它起作用了。
从查询中删除分号 (;)、反引号 (``) 等
我正在使用执行 Oracle SQL 的第 3 方程序,我遇到了这个错误。在 SELECT
声明之前,我有一些包含特殊字符的注释。删除评论解决了问题。
解决此 Oracle 错误的选项是:
选项#1 当您尝试在 SQL 语句中使用特殊字符时会发生此错误。如果列名或table中使用了$、_、#以外的特殊字符,则必须用双引号括起来。
选项#2 如果您从另一个程序将 SQL 粘贴到您的编辑器中,则可能会发生此错误。有时可能会出现非 printable 字符。在这种情况下,您应该尝试重新输入 SQL 语句,然后重新执行它。
选项#3 当在 SQL WHERE 子句中使用特殊字符并且值未包含在单引号中时,会发生此错误。
例如,如果您有以下 SQL 语句:
SELECT * 来自供应商 其中 supplier_name = ?;
删除分号 ( ; )。
在oracle中,直接在DB上查询时,可以使用分号也可以不使用分号。但是当你使用 java 到 运行 一个 oracle 查询时,你必须在最后删除分号。