-->ColdFusion 初级教程-->动态SQL

ColdFusion

后页 前页
目录
北极星书库
动态SQL


嵌人使用动态参数的SQL查询是将用户输入与数据库字段相对应起来的强大机制。但是,在更复杂的应用程序中,通常不仅需要根据用户输入决定查询内容,而且需要根据用户输入决定查询的结构。


动态SQL使你能够动态地决定(根据运行时参数)对数据库执行SQL语句的哪一部分。例如,如果用户没有在一个查询字段中输入数据,你可以忽略WHERE从句中与该字段相关的部分。如果用户没有指定按哪个字段排序,则整个ORDER BY从句可以被忽略。


ColdFusion中动态SQL的实现是利用CFIF/CFELSEIF/CFELSE标签控制SQL语句的建立。在CFQUERY中一个动态SQL语句有如下形式:


<CFQUERY NAME=" queryname"


DATASOURCE=" datasourcename" >


...Base SQL statement


<CFIF value operator value >


...additional SQL


</CFIF>


</CFQUERY>


在下面的例子中,用一系列CFIF标签来确定将哪一个SQL语句追加到基本SQL SELECT语句后面:


<CFQUERY NAME="GetParkList"


DATASOURCE="CF 4.0 Examples">


SELECT *


FROM Parks


WHERE 0=0


<CFIF #ParkName# is not "">


AND ParkName LIKE ‘%#ParkName#%’


</CFIF>


<CFIF #ParkType# is not "AllTypes">


AND ParkType = ‘#ParkType#’


</CFIF>


<CFIF #Region# is not "AllRegions">


AND Region = ‘#Region#’


</CFIF>


<CFIF #State# is not "">


AND State = ‘#State#’


</CFIF>


</CFQUERY>


提示:WHERE 0=0从句对数据库查询不产生任何影响。但如果所有的CFIF条件都不成立,该从句可以保证WHERE从句不会产生SQL语法错误。


下面的例子演示了如何用动态SQL来确保一个多选列表框的输入:


<CFQUERY NAME="GetParkList"


DATASOURCE="CF 4.0 Examples">


SELECT *


FROM Parks


WHERE 0=0


<CFIF IsDefined("ParkName_ID")>


AND ParkName_ID IN (#Form.ParkName_ID#)


</CFIF>


</CFQUERY>


后页
前页
目录
北极星书库