好的,我已经得到了这个命令:
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,与我们一样。删除了return into子句,但仍然收到相同的错误。
答案 0 :(得分:1)
如果您需要使用Oracle版本而不返回,我会在评论中询问该怎么做。我认为这与答案的精神有很大的不同,关于回归是否存在于自己的答案中。 一种方法是使用序列中的nextval函数并在插入之前获取ID。
select sequence.nextval into :id from dual;
然后执行插入。 有关更多示例,请参阅http://www.dba-oracle.com/t_oracle_nextval_function.htm。
答案 1 :(得分:0)
他们的oracle版本很可能不支持return子句。自1998年我开始在Oracle 7中使用Oracle以来,to_date in values已经发挥作用。 根据{{3}},Oracle 9I第2版中添加了返回子句。