ORA-00923 甲骨文错误
Posted
技术标签:
【中文标题】ORA-00923 甲骨文错误【英文标题】:ORA-00923 ORACLE ERROR 【发布时间】:2011-08-09 10:40:47 【问题描述】:INSERT INTO FCR.TRANSACTION (TRX_UNIT, TRX_DATE, TRX_USR,
TRX_USR_SN, TRANSACTION_CODE,
PRODUCT_CODE, CURRENCY_SHORT_DESCRIPTION,
AMOUNT_FC, EXCHANGE_RATE, AMOUNT_DC)
SELECT SOURCE_SYSTEM_CHANNEL_CODE, to_char(TRANSACTION_DATE), 'dd/mm/yyyy'),
USER_CODE, USER_TRANSACTION_SERIAL_NUMBER, TRANSACTION_CODE,
PROFITS_PRODUCT_CODE, SHORT_DESCRIPTION, SOURCE_AMOUNT_FC,
SOURCE_EXCHANGE_RATE, SOURCE_AMOUNT_EUR
FROM FCR.ORION_FCR_TRANSACTION
WHERE TRANSACTION_DATE = 'to_char(" + date + ", 'dd/mm/yyyy')'
上面的查询是给我ORA-00923 ERROR. FROM KEYWORD NOT FOUND IN POSITION.
谁能帮我解决上述问题。
我认为该错误与我的 C# 代码中的行有关:
WHERE TRANSACTION_DATE = 'to_char(" + date + ", 'dd/mm/yyyy')'
【问题讨论】:
您实际上并不需要将所有内容都写成大写。 SQL有这样的传统;自然语言不会。 为什么 to_char 在 where 子句中被引用为字符串? SO 语法高亮很棒! 【参考方案1】:这是因为 TRANSACTION_DATE 之后的右括号。
您将 to_char 放在字符串中的 WHERE 中这一事实也无济于事。 :)
我不确定,但如果您只使用一点缩进可能会有所帮助。如果您的查询以更易读的方式概述,则更容易发现这样的错字。
INSERT INTO FCR.TRANSACTION (
TRX_UNIT,
TRX_DATE,
TRX_USR,
TRX_USR_SN,
TRANSACTION_CODE,
PRODUCT_CODE,
CURRENCY_SHORT_DESCRIPTION,
AMOUNT_FC,
EXCHANGE_RATE,
AMOUNT_DC)
SELECT
SOURCE_SYSTEM_CHANNEL_CODE,
to_char(TRANSACTION_DATE), 'dd/mm/yyyy'),
USER_CODE,
USER_TRANSACTION_SERIAL_NUMBER,
TRANSACTION_CODE,
PROFITS_PRODUCT_CODE,
SHORT_DESCRIPTION,
SOURCE_AMOUNT_FC,
SOURCE_EXCHANGE_RATE,
SOURCE_AMOUNT_EUR
FROM
FCR.ORION_FCR_TRANSACTION
WHERE
TRANSACTION_DATE = 'to_char(" + date + ", 'dd/mm/yyyy')'
【讨论】:
谢谢,但我删除了括号:INSERT INTO FCR.TRANSACTION (TRX_UNIT, TRX_DATE, TRX_USR, TRX_USR_SN, TRANSACTION_CODE, PRODUCT_CODE, CURRENCY_SHORT_DESCRIPTION, AMOUNT_FC, EXCHANGE_RATE, AMOUNT_DC) SELECT SOURCE_SYSTEM_CHANNEL_CODE, to_char /mm/yyyy'), USER_CODE, USER_TRANSACTION_SERIAL_NUMBER, TRANSACTION_CODE, PROFITS_PRODUCT_CODE, SHORT_DESCRIPTION, SOURCE_AMOUNT_FC, SOURCE_EXCHANGE_RATE, SOURCE_AMOUNT_EUR FCR.ORION_FCR_TRANSACTION WHERE TRANSACTION_DATE = 'to_char(" + date + ", 'dd/mm/y)' ora-00933:sql 命令未正确处理 ..和?发生什么事了吗? @golezTrol--我尝试了您的查询,但未找到 FROM 关键字,预计会出现错误。你知道我有什么问题吗>?非常感谢 那是因为我刚刚更正了该查询中的大纲。我指出了错误:删除 `to_char(TRANSACTION_DATE), 'dd/mm/yyyy'), ` 中的第一个右括号。 之后你会得到一个SQL command not properly ended
,这是因为 WHERE 表达式中的语法错误。【参考方案2】:
我猜是这样的:
to_char(TRANSACTION_DATE), 'dd/mm/yyyy'),
应该是这样的:
to_char(TRANSACTION_DATE, 'dd/mm/yyyy'),
还有这个:
WHERE TRANSACTION_DATE = 'to_char(" + date + ", 'dd/mm/yyyy')'
应该是这样的:
WHERE TRANSACTION_DATE = to_char(date, 'dd/mm/yyyy')'
【讨论】:
我更改了它们,但仍然告诉我 sql 命令没有正确结束。我正在附加我的 sql 查询:INSERT INTO FCR.TRANSACTION (TRX_UNIT, TRX_DATE, TRX_USR, TRX_USR_SN, TRANSACTION_CODE, PRODUCT_CODE, CURRENCY_SHORT_DESCRIPTION, AMOUNT_FC, EXCHANGE_RATE, AMOUNT_DC) SELECT SOURCE_SYSTEM_CHANNEL_CODE, to_char(TRANSACTION_DATE, 'dd/mm/yyy , USER_TRANSACTION_SERIAL_NUMBER, TRANSACTION_CODE, PROFITS_PRODUCT_CODE, SHORT_DESCRIPTION, SOURCE_AMOUNT_FC, SOURCE_EXCHANGE_RATE, SOURCE_AMOUNT_EUR FCR.ORION_FCR_TRANSACTION WHERE TRANSACTION_DATE = 'to_char(date, 'dd/mm/yyyy')' 为什么你在 'to_char(date, 'dd/mm/yyyy')' 周围有引号,它们是不需要的【参考方案3】:格式化后更清晰,您似乎在他的选择部分添加了一个)
你有SELECT SOURCE_SYSTEM_CHANNEL_CODE, to_char(TRANSACTION_DATE), 'dd/mm/yyyy'),
我认为您可能在 TRANSACTION_DATE 之后为 to_char 添加了一个额外的结束括号
SELECT SOURCE_SYSTEM_CHANNEL_CODE, to_char(TRANSACTION_DATE, 'dd/mm/yyyy'),
有助于清晰地格式化代码并使用匹配括号的编辑器。
【讨论】:
以上是关于ORA-00923 甲骨文错误的主要内容,如果未能解决你的问题,请参考以下文章
ORA-00923: 在 oracle 中未找到预期错误的 FROM 关键字
ORA-00923 错误:在预期的地方找不到 FROM 关键字
错误:ORA-00923:在预期的地方找不到 FROM 关键字
我将如何修复这些“ORA-00933:SQL 命令未正确结束”“ORA-00923:未在预期位置找到 FROM 关键字”错误?