我已经搜索过这个问题的答案,但我发现没有一个真正有帮助。我有一个将数据写入表的存储过程。插入包含一个 DateTime 字段,但根据输入的数据,该字段可以为空。我的经典 ASP 页面中的代码类似于以下内容:
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 字段在表中留空?
我对存储过程很陌生,所以请原谅任何初学者的错误。:)
谢谢。