繁体   English   中英

我如何将匿名块发送到oracle并在Coldfusion中从oracle获取结果

[英]how can i send an anonymous block to oracle and get result from oracle in coldfusion

在Coldfusion中,如何将匿名块发送到oracle并从oracle得到一些响应? 我尝试了cfquery ,但它不起作用。 万分谢意。


@Antony,我知道我可以在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中获得一些返回值。

@Antony,嗨,安东尼,上面的代码只是一个演示。 实际上,我想从无意识中获得的只是简单的数据类型,而不是集合或对象类型实例。 例如VARCHAR2,NUMBER等。


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

您不能在其中包含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>

尽管我可以想到一种真正尝试过的方法,但我自己绝不会自己生产这种标准方法,但是没有想到的标准方法。 我认为您可能会坚持使用SQL来返回您的值(与匿名块分开)。

对存储过程的限制感到遗憾。 您可以尝试使过程与数据位于不同的架构中,从而使它们在逻辑上是隔离的。

如果您使用的是支持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块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM