Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在coldfusion中向oracle发送匿名块并从oracle获取结果_Oracle_Stored Procedures_Coldfusion - Fatal编程技术网

如何在coldfusion中向oracle发送匿名块并从oracle获取结果

如何在coldfusion中向oracle发送匿名块并从oracle获取结果,oracle,stored-procedures,coldfusion,Oracle,Stored Procedures,Coldfusion,在coldfusion中,如何向oracle发送匿名块并从oracle获得响应? 我尝试了cfquery,但它不起作用。 非常感谢 @安东尼, 我知道我可以在cfquery中编写匿名块。例如: <cfquery name="queryName" datasource="oracle11ghr" result="queryName_meta"> BEGIN INSERT INTO npr_t_reservation(reservation_id) VALUES(33);

在coldfusion中,如何向oracle发送匿名块并从oracle获得响应? 我尝试了cfquery,但它不起作用。 非常感谢

@安东尼, 我知道我可以在cfquery中编写匿名块。例如:

<cfquery name="queryName" datasource="oracle11ghr" result="queryName_meta">
BEGIN
    INSERT INTO npr_t_reservation(reservation_id) VALUES(33);
    INSERT INTO npr_t_reservation(reservation_id) VALUES(34);
    UPDATE npr_t_reservation set reservation_id=35 WHERE reservation_id=34;
    COMMIT;
END;
</cfquery>
事实上,我不知道的是如何从向oracle发送匿名块中获得一些返回值

@安东尼,你好,安东尼,上面的代码只是一个演示。事实上,我想从anomynous获得的是简单的数据类型,而不是集合或对象类型实例。例如VARCHAR2、数字等

@APC,
我不使用某种存储程序,因为我不允许将其保存到数据库中。那么为什么我要使用匿名块来做数据库工作呢?因为我需要做很多与数据库相关的工作。如果我在coldfusion中做这些工作,那将是复杂而琐碎的。

没有一种标准的方法可以想到去做这件事,尽管我能想出一种真正令人费解的方法来尝试,但我自己永远不会投入生产。我认为您可能会被困在使用SQL返回值的过程中,与匿名块分离


对存储过程的限制令人遗憾。您可以尝试将过程设置为与数据不同的模式,以便它们在逻辑上相互隔离。

是否可以在其中包含SELECT查询以返回值

<cfquery name="queryName" datasource="oracle11ghr" result="queryName_meta">
BEGIN
    INSERT INTO npr_t_reservation(reservation_id) VALUES(33);
    INSERT INTO npr_t_reservation(reservation_id) VALUES(34);
    UPDATE npr_t_reservation set reservation_id=35 WHERE reservation_id=34;
    COMMIT;
    SELECT myReturnValue AS RETURN_VALUE FROM dual;
END;
</cfquery>

<cfoutput>#queryName.RETURN_VALUE#</cfoutput>

如果您使用的是支持cfide.adminapi的coldfusion版本,则可以执行以下操作:


<cfquery name="insData" datasource="datasourcename">
    insert into maytable
        (column1)
    values
        (42)
</cfquery>

<cfscript>
adminObj = createObject("component","cfide.adminapi.administrator");
    adminObj.login("password");

adminDbugObj = createObject("component","cfide.adminapi.debugging");
// getDebugRecordset() returns a query object.
// "name", "datasource" and "body" are three of its columns.
q = #adminDbugObj.getDebugRecordset()#;
</cfscript>

<cfloop query="q">
<cfif name EQ "insData" and datasource EQ "datasourcename">
<cfoutput>#rowcount#</cfoutput>
<cfabort>
</cfif>
</cfloop>

我也会将cftransaction/cftry/cfcatch标记与commit/rollback一起使用,而不是使用匿名块,并将查询分离到它们自己的cfquery块中。

请显示失败的cfquery代码为什么要使用匿名块而不是存储过程?您希望从一系列插入和更新?太棒了,不是吗。我们在一个建立在布尔逻辑基础上的行业工作,然而如此多的IT决策完全不合逻辑。请不要在你的问题中嵌入你的评论。大家好,艾尔·埃弗雷特,在这种情况下,我不知道如何在coldfusion中获取myReturnValue的值并使用它。你能解释一下吗?请参考query.columnname。我已经更新了我的示例。