【问题标题】:How to send null value to a stored procedure?如何将空值发送到存储过程?
【发布时间】:2013-06-14 12:35:03
【问题描述】:

我的存储过程如下所示:

CREATE PROCEDURE [dbo].[insertCompList_Employee]
   @Course_ID int, 
   @Employee_ID int, 
   @Project_ID int = NULL, 
   @LastUpdateDate datetime = NULL,  
   @LastUpdateBy int = NULL                     
AS 
BEGIN 
   SET NOCOUNT ON 

   INSERT INTO db_Competency_List(Course_ID, Employee_ID, Project_ID, LastUpdateDate, LastUpdateBy) 
   VALUES (@Course_ID, @Employee_ID, @Project_ID, @LastUpdateDate, @LastUpdateBy) 
END 

我的asp.net vb代码后面如下:

    dc2.insertCompList_Employee(
    rdl_CompList_Course.SelectedValue, 
    RadListBox_CompList_Select.Items(i).Value.ToString, 
    "0",
    DateTime.Now, 
    HttpContext.Current.Session("UserID")
)

我想为Project_ID 插入一个null 值而不是0

我试过NULL'NULL',但它返回错误。

【问题讨论】:

  • 您是否尝试过不带引号传递 null 或传递 DBNull.Value
  • 是的,我试过 DBNull.Value , null, ""。但它不起作用

标签: sql asp.net .net sql-server vb.net


【解决方案1】:
【解决方案2】:

我没有看到将值转换为参数的代码,但如果参数应该为空,请不要将参数添加到参数集合中。只要存储过程中有默认值,它就可以正常工作,在您的情况下为 null。

if projectid <> 0 then
   cmd.addwithvalue("@ProjectId",projectid)
end if

【讨论】:

    【解决方案3】:

    我终于找到了解决方案...

    我对 project_id 使用 Nullable 类型。 声明如下:

    Dim pid As System.Nullable(Of Integer)
    

    然后编码通过存储过程插入数据

    dc2.insertCompList_Employee(
    rdl_CompList_Course.SelectedValue, 
    RadListBox_CompList_Select.Items(i).Value.ToString, 
    pid, 
    DateTime.Now, 
    HttpContext.Current.Session("UserID"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      相关资源
      最近更新 更多