如何对 2100 多个值进行选择?
<cfquery name="result.qryData">
SELECT sub_acct_no, ...
FROM dbo.Closed_ORDER
WHERE ord_no IN <cfqueryparam cfsqltype="CF_SQL_varchar" value="#ValueList(qryOrd.ord_no)#" list="yes">
</cfquery>
由于表的设置方式,链接服务器和联接不是一个选项。
当它运行时,会抛出错误,因为有新的许多字段被传入。
首先将值加载到 XML 中
<cfset var strResult = '<ul class="xoxo">'>
<cfloop query="qryOrd">
<cfset strResult &= '<li>#xmlformat(ord_no)#</li>'>
</cfloop>
<cfset strResult &= '</ul>'>
然后在 sql 查询中使用 xml
<cfquery name="result.qryData">
DECLARE @xmlOrd_no xml = <cfqueryparam cfsqltype="CF_SQL_varchar" value="#strResult#">
DECLARE @tblOrd_no TABLE (ID varchar(20))
INSERT INTO @tblOrd_no
SELECT tbl.Col.value('.', 'varchar(20)')
FROM @xmlOrd_no.nodes('/ul/li') tbl(Col)
SELECT sub_acct_no, ...
FROM dbo.Closed_ORDER
WHERE ord_no IN (SELECT ID FROM @tblOrd_no)
</cfquery>
您还可以对 XML 进行转储,并在 HTML 中正确格式化
<cfoutput>#strResult#</cfoutput>