我已经搜索了这个答案,但没有找到真正的帮助。我有一个将数据写入表的存储过程。该插入包括一个DateTime字段,但根据输入的数据,该字段可以为空。在我的经典ASP页面的代码是类似以下内容:如何通过存储过程将NULL值插入到datetime字段中
If Request.Form("Status") = "Closed" Then
Status = "Closed"
DateClosed = Now()
Else
Status = "OPEN"
DateClosed = NULL
End If
SP_AddToTable = "MyTable '" & Status & "', '" & DateClosed & "'"
Set SQLQuery = objConn.Execute(SP_AddToTable)
存储过程是这样的:
USE [MyDatabase]
GO
/****** Object: StoredProcedure [dbo].[SP_AddToTable] Script Date: 04/30/2013 10:00:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_AddToTable]
@Status varchar(20),
@DateClosed datetime
AS
INSERT INTO MyTable (
[Status],
DateClosed,
)
VALUES (
@Status,
@DateClosed)
如果我通过一个实际的日期值,它工作正常,但如果NULL值被传递,或者如果我没有将任何数据传递给DateClosed字段,那么该字段默认为1900年1月1日。我需要做什么(在我的ASP代码或存储过程中)离开DateClosed字段在桌子上空着?
我对存储过程很陌生,所以请原谅任何初学者的错误。 :)
谢谢。
尝试@DateClosed datetime = NULL在存储过程中。 – 2013-04-30 15:02:44
“NULL”只会导致空值,不会实际为空。更改为'DateClosed = VBNull'在那里有真正的空值。 – 2013-05-01 08:31:44