我有一张这样的表
CREATE TABLE [dbo].[tblVolunteers]
(
[VolID] [int] IDENTITY(1,1) NOT NULL,
[VolFName] [varchar](20) NULL,
[DLExpiration] [smalldatetime] NULL,
CONSTRAINT [PK_tblVolunteers] PRIMARY KEY CLUSTERED
([VolID] ASC),
CONSTRAINT [uniqueUserID] UNIQUE NONCLUSTERED ([UserID] ASC)
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
我有一个存储过程来更新此表中的数据
ALTER PROCEDURE [dbo].[volUpdate]
@StaffID INT,
@ModifiedBy VARCHAR(100),
@NickName VARCHAR(20),
@FirstName VARCHAR(20),
@DLExpiration SMALLDATETIME
AS
UPDATE tblVolunteers
SET
VolNickName = @NickName,
VolFName = @FirstName,
DLExpiration = @DLExpiration
WHERE
VolID = @StaffID
在某些情况下,当时我没有要更新的有效DLExpiration
我希望将null值传递给表。而且我这样做
new SqlParameter("@DLExpiration", null)
但它仍然会抛出错误
程序或功能' volUpdate'期望参数' @ DLExpiration',这是未提供的。
有谁可以指出我在这里做错了什么?
答案 0 :(得分:1)
您需要将DBNull.Value
传递给存储过程:
new SqlParameter("@DLExpiration", DBNull.Value)