ColdFusion查询更新时遇到的查询

ColdFusion查询更新时遇到的查询,coldfusion,Coldfusion,我正在尝试将cftag查询转换为cfscript查询 以下是cftag版本: <cfquery name="local.qUpdateCRDRMemo" datasource="#Application.dsn.orionTesting#"> UPDATE is_data.crdr_memo SET ps_speed_type = <cfqueryparam cfsqltype="CF_SQL_VA

我正在尝试将cftag查询转换为cfscript查询

以下是cftag版本:

    <cfquery name="local.qUpdateCRDRMemo" datasource="#Application.dsn.orionTesting#">
UPDATE is_data.crdr_memo
                SET
                    ps_speed_type = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#local.valid.operatingUnit#";,
                    ps_account_no = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#local.valid.account#";,
                    ps_class = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#local.valid.class#";,
                    requested_by = <cfqueryparam cfsqltype="CF_SQL_NUMERIC" value="#local.requestorId#" null="#utils.isNull(local.requestorId)#";,
                    updated_by = <cfqueryparam cfsqltype="CF_SQL_VARCHAR" value="#utils.getUserInfo()#";
                WHERE crdr_memo_id = <cfqueryparam cfsqltype="CF_SQL_NUMERIC" value="#local.adjustment#" null="#utils.isNull(local.adjustment)#";
            </cfquery>

更新is_data.crdr_备忘录
设置

ps_speed_type=要查询带有标记的数据库:

<cfquery name="local.qUpdateCRDRMemo" datasource="#Application.dsn.orionTesting#">
    SQL HERE
</cfquery>
<cfquery name="local.qUpdateCRDRMemo" dbtype="query">
    SELECT * FROM existingQueryName
</cfquery>
要对带有标记的现有查询运行查询查询查询(QoQ),请执行以下操作:

<cfquery name="local.qUpdateCRDRMemo" datasource="#Application.dsn.orionTesting#">
    SQL HERE
</cfquery>
<cfquery name="local.qUpdateCRDRMemo" dbtype="query">
    SELECT * FROM existingQueryName
</cfquery>
要使用queryService对脚本中的现有查询运行查询查询,请执行以下操作:

var myQuery = new Query();
var sql = "SELECT * FROM QoQsrcTable";
// note that for queryService, you need to use the existing query VARIABLE, not its name
var myResult = queryService.execute(dbtype="query",
    qoqSrcTable=existingQueryVariable, sql=sql).getResult();
你可以使用不同的语法,但我通常就是这样做的。你的问题的答案是,你的脚本和标签“版本”做的不是同一件事。指示查询是针对外部数据源运行还是针对本地查询运行。您的标记示例正在访问外部数据源。您的脚本示例正在尝试针对本地查询运行

它非常强大,所以如果你不知道它,我会仔细阅读它,因为它会让你了解正在发生的事情,以及为什么它不能按预期工作

不过,简单的答案是删除
dbtype=“query”
并将数据源添加到脚本版本中

   ... WHERE crdr_memo_id = [local].adjustment"
   , {}
   , {datasource="#Application.dsn.orionTesting#"}
 );

您通过
dbtype=“query”
@BernhardDöbler谢谢,我已经找出了导致错误的原因,但应该是什么?这应该是数据源`{datasource=Application.dsn.orionTesting}很好的解释。还可以使用添加一个示例。与基于cfc的
new Query()
相比,新的核心函数有一些改进。这是在cf2016中吗?我还在10号。如果你想建议用新语法编辑,我会接受它,让答案更全面。我想这应该能满足我的需要。如果我以后有时间,我可能会的。之所以提到它,是因为OP中使用了
queryExecute
,但语法几乎相同。所以上面写的看起来很好。
   ... WHERE crdr_memo_id = [local].adjustment"
   , {}
   , {datasource="#Application.dsn.orionTesting#"}
 );