Как обработать параметр по умолчанию в вызове хранимой процедуры SQL в ColdFusion? - PullRequest
1 голос
/ 30 июля 2010

Я создал хранимую процедуру SQL:

CREATE PROCEDURE usp_MyTableInsert
...
@name varchar(100),
@birthdate datetime = NULL,
@phoneno varchar(10),
...

И я звоню из кода ColdFusion:

<cfstoredproc 
   datasource="training"
   procedure="usp_MyTableInsert">
   ....
   <cfprocparam cfsqltype="CF_SQL_VARCHAR" value="#form.name#" dbvarname="@name">
   <cfprocparam cfsqltype="CF_SQL_DATE" value="#ParseDateTime(form.birthdate)#" dbvarname="@birthdate">
   <cfprocparam cfsqltype="CF_SQL_VARCHAR" value="#form.phoneno#" dbvarname="@phoneno">
   ....
</cfstoredproc>

Что если я не хочу передавать дату рождения в качестве параметра? Он должен принимать значение NULL, так как я установил его как значение по умолчанию в SP. Если я его удаляю, выдает ошибку, например, невозможно преобразовать varchar в datetime, это означает, что мы должны передать все параметры в правильном порядке.

спасибо ..

Ответы [ 2 ]

4 голосов
/ 30 июля 2010

Мое личное предпочтение - использовать ярлык для атрибута "null", используя любую проверку даты, которая подходит. Но оба метода действительны, если вы предоставите все необходимые атрибуты, такие как cfsqltype.

На стороне заметка "dbvarname" устарела, поэтому не используйте его в новых приложениях.

<cfstoredproc 
   datasource="training"
   procedure="usp_MyTableInsert">
   ...
   <cfprocparam cfsqltype="CF_SQL_VARCHAR" value="#form.name#">
   <cfprocparam cfsqltype="CF_SQL_DATE" value="#form.birthdate#" null="#not IsDate(form.birthdate)#">
   <cfprocparam cfsqltype="CF_SQL_VARCHAR" value="#form.phoneno#">
   ....
</cfstoredproc>
3 голосов
/ 30 июля 2010

См. документы .

<cfstoredproc datasource="training" procedure="usp_MyTableInsert">
    ....
    <cfprocparam value="#form.name#" dbvarname="@name">
    <cfif IWantToPassInBirthday eq "YES">
        <cfprocparam value="#ParseDateTime(form.birthdate)#" dbvarname="@birthdate">
    <cfelse>
        <cfprocparam null="YES" dbvarname="@birthdate">
    </cfif>
    <cfprocparam value="#form.phoneno#" dbvarname="@phoneno">
    ....
</cfstoredproc>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...