返回。。。进入子句引发Oracle和ColdFusion错误

返回。。。进入子句引发Oracle和ColdFusion错误,oracle,coldfusion,oracle10g,coldfusion-9,Oracle,Coldfusion,Oracle10g,Coldfusion 9,这是我正在运行的查询 <cfquery name="myquery" datasource="mydatasource"> INSERT INTO myTable (myfield) VALUES (<cfqueryparam cfsqltype="cf_sql_varchar" value="#ARGUMENTS.myValue#" />) RETURNING id INTO <cfqu

这是我正在运行的查询

<cfquery name="myquery" datasource="mydatasource">
    INSERT INTO 
        myTable (myfield) 
    VALUES 
        (<cfqueryparam cfsqltype="cf_sql_varchar" value="#ARGUMENTS.myValue#" />)
    RETURNING
        id INTO <cfqueryparam cfsqltype="cf_sql_varchar" value="#LOCAL.myid#" />    
</cfquery>

插入
myTable(myfield)
价值观
()
返回
识别进入
我得到的错误是
ORA-00439:未启用功能:从此客户端类型返回子句


我在cfquery中遇到了一个名为的特性,我认为这可以用来减轻任何我无权访问的数据库服务器设置。然而,我似乎无法让GENERATEDKEY返回我的主键,相反,我得到了类似AAFO9CAEAAB8VYAAH的东西,这是Oracle rowid…

根据您链接的文档,查询结果中没有GENERATEDKEY成员。mySQL有一个生成的_键,但oracle是ROWID,尽管文档中说“仅限oracle。插入行的ID。这不是该行的主键,尽管您可以基于此ID检索行。”但我不确定如何从一个映射到另一个。如果您省略了语句的返回部分,您是否为ROWID获取了任何信息

我不熟悉coldfusion,可能有一些简单的解决方案。
但如果不是,一种解决方法可能是创建一个使用
returning子句的存储过程,然后重新运行它。
这样您就可以调用存储过程了

create or replace function insert_my_table(my_value varchar2) return number is
   i number;
begin
   insert into my_table (value_col_name) values (my_value) returning id into i;
   return i;
end insert_my_table;

你的客户端版本是什么?您的查询是否可以从sql*plus中工作?OP将获得一个
ORA-00439
ID
是一个列名(这就是在oracle中使用returning子句的方式)。如果不是这样,他会得到一个
ORA-00904无效标识符