gpt4 book ai didi

oracle - 使用Oracle's “INSERT … RETURNING … INTO”语句的ColdFusion

转载 作者:行者123 更新时间:2023-12-02 00:45:22 25 4
gpt4 key购买 nike

我正在使用ColdFusion构建一个简单的聊天应用程序,并且在运行插入程序时尝试获取消息ID。这是我到目前为止所拥有的

<cffunction name="putMessage" access="remote" returnformat="JSON">

<cfargument name="message" />
<cfset LOCAL.id = 0 />

<cfquery name="insertquery" datasource="myDS">
insert into
chat (message)
values
(<cfqueryparam cfsqltype="cf_sql_varchar" value="#ARGUMENTS.message#">)
RETURNING
id
INTO
<cfqueryparam cfsqltype="cf_sql_numeric" value="#LOCAL.id#">
</cfquery>

<cfreturn LOCAL.id />

</cffunction>
我得到的错误是

执行数据库查询时出错。
并非所有返回参数都已注册

我知道存储过程和运行多个查询都有解决方法。我想知道怎么做。

最佳答案

这是一个古老的问题,因此请您提前为死灵法道歉。在我看来,最好的(也许是唯一的)方法是通过将INSERT语句包装在存储过程中,并从RETURNING ... INTO子句中的值返回到输出参数中。

CREATE OR REPLACE PROCEDURE chat_insert
( p_message IN VARCHAR2, r_id OUT NUMBER )
AS
BEGIN
INSERT INTO chat ( message )
VALUES ( p_message )
RETURNING id INTO r_id;
END;
/

然后,您可以从ColdFusion调用此存储过程,如下所示:
<cffunction name="putMessage" access="remote" returnformat="JSON">
<cfargument name="message" />
<cfset LOCAL.id = 0 />

<cfstoredproc procedure="chat_insert" datasource="myDS">
<cfprocparam cfsqltype="CF_SQL_VARCHAR" type="in" value="#ARGUMENTS.message#" />
<cfprocparam cfsqltype="CF_SQL_VARCHAR" type="out" variable="LOCAL.id" />
</cfstoredproc>

<cfreturn LOCAL.id />
</cffunction>

希望这可以帮助。

关于oracle - 使用Oracle's “INSERT … RETURNING … INTO”语句的ColdFusion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10954033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com