1

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>

テーブルがセットアップされる方法のため、リンクされたサーバーと JOINS はオプションではありません。

これが実行されると、新しい多くのフィールドが渡されるため、エラーがスローされます。

4

1 に答える 1

4

最初に値を 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>
于 2013-10-06T20:56:46.097 に答える