1

这是我正在运行的查询。

<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 ......

4

2 回答 2

0

根据您链接的文档,查询结果没有 generatekey 成员。mySQL 有一个 generated_key,但对于 oracle,它是 ROWID,尽管文档说“仅限 Oracle。插入行的 ID。这不是该行的主键,尽管您可以根据该 ID 检索行。” 我不确定如何从一个映射到另一个。如果你省略了语句的返回部分,你会得到 ROWID 的任何东西吗?

于 2012-05-16T14:10:02.823 回答
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;
于 2012-05-16T14:36:40.540 回答