Tsql 从cfquery记录集中更新多行
当传入的数据来自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 = <
<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:不确定//是否受支持,但它不受支持。如果此操作必须运行多次,那么您应该首先采取措施防止问题再次出现。那你只需要做一次。