返回。。。进入子句引发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无效标识符