我已經搜索了這個答案,但沒有找到真正的幫助。我有一個將數據寫入表的存儲過程。該插入包括一個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