Как написать SQL-запрос для условия ColdFusion FindNoCase If? - PullRequest
0 голосов
/ 21 сентября 2018

Я хотел бы написать этот запрос ниже как хранимую процедуру в SQL.При этом я не могу выяснить, как написать для одного из условий, написанных в ColdFusion, а именно:

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

Я хочу сделать оператор выбора для хранимой процедуры, которая является тегом 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 голосов
/ 05 октября 2018

Я думаю, что способ сделать это будет с параметром хранимой процедуры.Добавьте новый параметр для вашего хранимого процесса, скажем, 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 в выводе или результате, оченьПолегче.Надеюсь, это поможет.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...