Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Tsql 从cfquery记录集中更新多行_Tsql_Coldfusion_Cfquery - Fatal编程技术网

Tsql 从cfquery记录集中更新多行

Tsql 从cfquery记录集中更新多行,tsql,coldfusion,cfquery,Tsql,Coldfusion,Cfquery,当传入的数据来自CFQuery的结果时,是否有方法更新多行数据?当前,此操作将运行多次。有没有一种方法可以在一次手术中完成 <cfloop query=loc.fixItems> <cfset loc.count++> <cfset var categoryName = loc.fixItems.categoryName> <cfquery> update items set code = <

当传入的数据来自CFQuery的结果时,是否有方法更新多行数据?当前,此操作将运行多次。有没有一种方法可以在一次手术中完成

<cfloop query=loc.fixItems>
    <cfset loc.count++>
    <cfset var categoryName = loc.fixItems.categoryName>


    <cfquery>
      update items
      set code = <cfqueryparam value="#code#">
      where id = <cfqueryparam value="#itemId#">
    </cfquery>
</cfloop>

更新项目
设置代码=
其中id=

这可能会运行多次并给服务器带来沉重的负载。

将数据加载到XML变量中并批量更新

<cfsavecontent variables="xmlData">
<ul class="xoxo">
   <cfoutput query="loc.fixItems">
     <li><b>#xmlformat(id)#</b> <code>#code#</code></li>
   </cfoutput>  
 </ul>
 </cfsavecontent>

 <!---
 <cfoutput>#xmlData#</cfoutput>
 --->

 <cfquery>
 DECLARE @xmlData xml = <cfqueryparam cfsqltype="CF_SQL_varchar" value="#xmlData#">


 ;
 WITH Data (id, code) AS (
    SELECT  tbl.Col.value('b[1]','varchar(20)') AS ID,
    tbl.Col.value('code[1]','varchar(50)') AS Code
    FROM    @xmlData.nodes('/ul/li') tbl(Col)
    )

 UPDATE items
   SET items.code = Data.code
 FROM items
 INNER JOIN Data
   ON items.id = Data.id    
 </cfquery>

您应该能够将循环放入
cfquery

<cfquery>
  <cfloop query=loc.fixItems>
    <cfset loc.count++>
    <cfset var categoryName = loc.fixItems.categoryName>    
    update items
    set code = <cfqueryparam value="#code#"> -- code needs to be dynamic
    where id = <cfqueryparam value="#itemId#">; -- itemId needs to be dynamic
  </cfloop>
</cfquery>

更新项目
set code=--代码需要是动态的
其中id=;--itemId需要是动态的

看起来每次的代码值都是一样的。丹-不知道你为什么这么说
code
itemID
似乎是查询中的列,因此值在每次迭代时都会更改。在中,它们是函数参数,但是从查询传入的。适当的范围界定将澄清意图并消除评论的必要性,同时在该主题上。。。TSQL使用
--
作为行注释;不确定是否支持
/
。啊,没错,原始查询列名不同。绝对是范围界定的好论据(没有双关语)。RE:不确定//是否受支持,但它不受支持。如果此操作必须运行多次,那么您应该首先采取措施防止问题再次出现。那你只需要做一次。