나는 이에 대한 해답을 찾았지만 찾지 못했습니다. 테이블에 데이터를 쓰는 저장 프로 시저가 있습니다. 삽입에는 DateTime 필드가 있지만이 필드는 입력되는 데이터에 따라 비어있을 수 있습니다.저장 프로 시저를 통해 datetime 필드에 NULL 값을 삽입하는 방법
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)
저장 프로 시저는 다음과 같습니다 : 내 클래식 ASP 페이지의 코드는 다음과 유사한
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 필드를 벗어나려면 무엇이 필요합니까? 테이블에 비어 있니?
저는 저장 프로 시저가 새로 도입되었으므로 초보자 용의 오류는 용서하십시오. :)
감사합니다.
이Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = objConn
cmd.CommandText = "SP_AddToTable"
cmd.CommandType = adCmdStoredProc
cmd.Parameters.Refresh
cmd.Parameters(1) = Status
cmd.Parameters(2) = DateClosed
cmd.Execute
이것은 또한 당신이되기 전에 귀하의 널 (null) 문제를 해결해야한다 : 위의 쿼리는 SQL 주입에 매우 취약 -
스토어 절차에서 @DateClosed datetime = NULL을 시도하십시오. –
"NULL"은 단지 실제 값이 아닌 빈 값을 가져옵니다. 거기에 실제 null 값을 가지고'DateClosed = VBNull'로 변경하십시오. –