这是我正在运行的查询。
<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>
我得到的错误是ORA-00439: feature not enabled: RETURNING clause from this client type
我在cfquery中遇到了一个名为GENERATEDKEY的功能,我认为这可以用来缓解我无法访问的任何数据库服务器设置。但是我似乎无法让GENERATEDKEY返回我的主键,而是得到类似AAFO9cAAEAAB8vYAAH的东西,这是Oracle rowid ......
答案 0 :(得分:0)
根据您链接的文档,查询结果中没有generatekey成员。 mySQL有一个generated_key,但对于oracle来说它是ROWID,虽然文档说这只是“Oracle。插入行的ID。这不是行的主键,尽管你可以根据这个ID检索行。”我不知道如何从一个映射到另一个。如果省略语句的RETURNING部分,你会得到ROWID的任何内容吗?
答案 1 :(得分:0)
我不熟悉coldfusion,可能有一些简单的解决方案
但如果没有,解决方法可能是创建一个使用returning clause
的存储过程并对其进行返回。
这样您就可以调用存储过程。
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;