我的存储过程如下所示:
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'
,但它会返回错误。
答案 0 :(得分:9)
使用内置值:DBNull.Value
答案 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"))