Evi*_*mes 1 sql coldfusion sql-server-2008 coldfusion-10
我将三个整数传递给CFC中的函数,如下所示:
<cfscript>
Q = TOPBIKES.GetTopBikes(127, 10, 11);
writeDump(Q);
</cfscript>
Run Code Online (Sandbox Code Playgroud)
CFC使用这些整数运行如下查询:
<!--- GET TOP BIKES --->
<cffunction name="GetTopBikes">
<cfargument name="FeatureID" required="true">
<cfargument name="MinWins" required="true">
<cfargument name="RecordsToReturn" required="true">
<cfscript>
LOCAL.FeatureID = ARGUMENTS.FeatureID;
LOCAL.MinWins = ARGUMENTS.MinWins;
LOCAL.RecordsToReturn = ARGUMENTS.RecordsToReturn;
</cfscript>
<!--- RUN QUERY --->
<cfquery name="Q">
SELECT TOP #LOCAL.RecordsToReturn#
B.BikeID,
B.BikeName,
BS.PCTWins
FROM Bikes B
LEFT JOIN BikeScores BS
ON B.BikeID = BS.BikeID
WHERE BS.Wins > <cfqueryparam cfsqltype="cf_sql_integer" value="#LOCAL.MinWins#">
AND B.BikeID IN ( SELECT BikeID
FROM Bikes_Features
WHERE FeatureID = <cfqueryparam cfsqltype="cf_sql_integer" value="#LOCAL.FeatureID#">
)
ORDER BY BS.PCTWins desc
</cfquery>
<cfreturn Q>
</cffunction>
Run Code Online (Sandbox Code Playgroud)
问题是我无法让cfqueryparam在SQL语句的TOP部分工作.
这些工作:
SELECT TOP 11
SELECT TOP #LOCAL.RecordsToReturn#
Run Code Online (Sandbox Code Playgroud)
这不起作用:
SELECT TOP <cfqueryparam
cfsqltype="cf_sql_integer"
value="#LOCAL.RecordsToReturn#">
Run Code Online (Sandbox Code Playgroud)
但是,我可以在查询中的任何其他位置使用.我知道它是一个整数,并且在其他地方使用时可以替代FeatureID.
有关为什么CFQUERYPARAM不在TOP工作的任何线索?