INSERT 语句中缺少 SELECT 关键字错误
Posted
技术标签:
【中文标题】INSERT 语句中缺少 SELECT 关键字错误【英文标题】:missing SELECT keyword error from INSERT statement 【发布时间】:2014-09-17 20:40:15 【问题描述】:好的,我有这个命令:
INSERT INTO PHOTOS_HEADER (TC_CLOCK, DC_SCANDATE, TC_PO, DC_DATE, NC_PACKAGES)
VALUES (:TC_CLOCK, TO_DATE(:DC_SCANDATE, :DATE_FORMAT), :TC_PO, TO_DATE(:DC_DATE, :DATE_FORMAT), :NC_PACKAGES)
RETURNING NC_AUTOID into :OUTPUT
我通过OracleCommand
对象在.NET 中运行它,它在我们的本地11g 服务器上运行find。当相同的代码在客户端站点上运行时,我们会收到以下错误:
ORA-00928:缺少 SELECT 关键字
可能是返回语句吗?会不会是to_date
?我正在努力找出客户端使用的 Oracle 服务器版本,但同时有什么建议吗?
编辑:客户端正在运行 Oracle 11,和我们一样。删除了返回到子句,但仍然收到相同的错误。
【问题讨论】:
【参考方案1】:有人在评论中问我,如果您需要使用某个版本的 Oracle 而不返回,该怎么办。我认为这与关于是否存在回归的答案的精神足以放在自己的答案中。 一种方法是使用序列中的 nextval 函数并在插入之前获取 ID。
select sequence.nextval into :id from dual;
然后执行插入。 有关更多示例,请参阅http://www.dba-oracle.com/t_oracle_nextval_function.htm。
【讨论】:
【参考方案2】:很可能他们的 oracle 版本不支持返回子句。自从我在 1998 年围绕 Oracle 7 开始使用 Oracle 以来,值中的 to_date 就一直有效。 根据http://www.dba-oracle.com/plsql/t_plsql_dml.htm,return 子句是在 Oracle 9I 第 2 版中添加的。
【讨论】:
您知道检索生成的 ID 的替代方法吗?以上是关于INSERT 语句中缺少 SELECT 关键字错误的主要内容,如果未能解决你的问题,请参考以下文章