3

我的存储过程如下所示:

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

我想插入一个nullProject_ID而不是0

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

4

3 回答 3

9

使用内置值:DBNull.Value

http://msdn.microsoft.com/en-us/library/system.dbnull.value.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

于 2013-06-18T10:24:54.507 回答
1

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

if projectid <> 0 then
   cmd.addwithvalue("@ProjectId",projectid)
end if
于 2013-06-18T19:55:23.127 回答
1

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

我对 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"))
于 2013-06-19T06:02:48.017 回答