如何为ColdFusion FindNoCase If条件编写SQL查询?

时间:2018-09-21 20:10:00

标签: sql sql-server coldfusion

我想在下面的查询中将此内容写为SQL中的存储过程。这样做时,我无法找出如何为用ColdFusion编写的条件之一写:

<CFIF FINDNOCASE("TOTALCUSTOMERPROFILES", ORDER.USERSORT)>
  , ISNULL(CPL.TOTALCUSTOMERPROFILES, 0) AS TOTALCUSTOMERPROFILES
</CFIF>

我想使select语句成为完整代码部分中cfquery标记的存储过程。谢谢。

完整代码:

<cffunction name="Get" output="false" access="public" returntype="struct">
<cfargument name="orderBy" required="false" type="string" default="lastName, firstName" hint="Valid Columns:firstName, lastName, contactTypeName, classification, title, email, phone, fax, isActive, insertedBy, modifiedBy" />

<cfscript>
    var returnStruct = StructNew();
    var qRates = "";
    var qTotalRecords = "";
    var order = structNew();
    var queryOrderBy = "c.customer_name";
    var endRow = arguments.startRow + arguments.rowLimit - 1;
    var validArgs = false;
    var i="";

    for(i in arguments){
        arguments[i] = Trim(arguments[i]);
    }

    order.userSort = arguments.orderBy;
    order.defaultSort = "c.customer_name";

    order.CUSTOMER_NAME="c.CUSTOMER_NAME";
    order.CUSTOMER_NUMBERsupplierName="c.CUSTOMER_NUMBER";
    order.TOTALCUSTOMERPROFILES="ISNULL(cpl.TOTALCUSTOMERPROFILES, 0)";     
</cfscript>

<cfquery name="qRates" datasource="#variables.dsn#">

   SELECT customer_name,
          customername,
          customer_number,
          NC_ORIGIN = LEFT( dp.ORIGIN,2)
          <cfif FindNoCase("totalcustomerprofiles", order.userSort)>
          , ISNULL(cpl.TOTALCUSTOMERPROFILES, 0) AS TOTALCUSTOMERPROFILES</cfif>

   FROM 
          TableName

   SET NOCOUNT OFF
</cfquery>
</cffunction> 

1 个答案:

答案 0 :(得分:0)

我认为一种方法是使用存储过程的参数。 为您存储的proc添加一个新参数,例如TOTALCUSTOMERPROFILES(作为布尔值)。在该存储过程中,根据该参数的值添加或不添加列。

使用cfstoredproc标记调用它时,可以使用值指定cfprocparam。 根据结果​​,将CFIF设置为正确的true或false。

<!--- Concept of the call --->
<cfstoredproc ....>
  <cfif FindNoCase("totalcustomerprofiles", order.userSort)>
     <cfprocparam ...  value="true">
  <cfelse>
     <cfprocparam ...  value="false">
  </cfif>
</cfstoredproc>

与其他注释一样,我建议总是简单地返回该列并将IF包含在输出或结果中,这要容易得多。 希望对您有所帮助。

谢谢。