【问题标题】:How to handle default parameter in SQL Stored Procedure call in ColdFusion?如何在 ColdFusion 中处理 SQL 存储过程调用中的默认参数?
【发布时间】:2010-07-30 11:08:42
【问题描述】:

我已经创建了一个 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 转换为日期时间,这意味着我们需要以正确的顺序传递所有参数。

谢谢..

【问题讨论】:

    标签: sql coldfusion


    【解决方案1】:

    我个人的偏好是使用“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>
    

    【讨论】:

      【解决方案2】:

      the docs

      <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>
      

      【讨论】:

      • 它说,标签 CFPROCPARAM 的属性验证错误。该标记需要属性:CFSQLTYPE。版本有问题吗?因为我使用 8.0..
      猜你喜欢
      • 2013-10-03
      • 2011-11-02
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 2016-11-04
      • 2010-11-07
      • 2016-09-25
      相关资源
      最近更新 更多