试图弄清楚如何使用脚本执行此循环。
<cfquery>
<cfloop from="1" to="#arrayLen(myData)#" index="i">
<!--- update query with different paramaters --->
</cfloop>
</cfquery>
我可以像这样在循环之外执行它,但是速度很慢:
for(i=1; i LTE arrayLen(myData); i++)
{
q = new Query();
q.setSql(" UPDATE SQL HERE ");
q.addParam(name="id", value=i);
q.Execute().GetResult();
}
我想在 SQL 中做,而不是在它之外。
更新:这是代码。我试图删除其中的一些以使其更简单。
我有一个用户输入数据的表单,然后称为:
for(i=1; i LTE listlen(arguments.myStruct.myfield1); i++) {
myfield1 = listgetAt(arguments.myStruct.myfield1,i);
for(j=1; j LTE arguments.myStruct.count; j++) {
maxvalue = form["max" & j];
myType = form["myType" & j];
id = myfield1;
local.queryService = new Query();
local.queryService.setSql
("
UPDATE mytypes
SET maxvalue = :maxvalue,
myType = :myType
WHERE mytypeID = :id
");
local.queryService.addParam(name="id", value=id);
local.queryService.addParam(name="maxvalue", value=maxvalue, cfsqltype="cf_sql_integer");
local.queryService.addParam(name="myType", value=myType, cfsqltype="cf_sql_integer");
local.queryService.Execute().GetResult();
}
}