如何将空值发送到存储过程?

时间:2013-06-18 10:22:30

标签: asp.net .net sql vb.net stored-procedures

我的存储过程如下所示:

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

我想为null而不是Project_ID

插入0

我曾尝试NULL'NULL',但它会返回错误。

3 个答案:

答案 0 :(得分:9)

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

最后我得到了解决方案......

我使用Nullable Type作为project_id。 声明如下:

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