2009-07-21 155 views
11

在VBScript(ASP環境)中,是否可以將具有空值的參數傳遞給存儲過程?VBScript:將具有空值的參數傳遞給存儲過程?

+0

燒死了,你可以提供一些示例代碼,說明你希望如何傳遞空值......在你的ADO Command對象上內聯字符串構建或輸入參數? – 2009-07-21 15:38:56

回答

2

如果您正在構建字符串以及檢查/防範SQL注入,那麼您可以簡單地在SQL字符串中使用null或逗號分隔的EXEC語句。

'calling a stored proc. 
strSQL = "EXEC UpdateCustomer @CustomerID=" & iCustomerID + ",@PhoneNumber=null" 

下面是如何使用空的手動內置字符串發送到DB

strSQL = "UPDATE Customer SET PhoneNumber = null WHERE CustomerID = " + iCustomerID 
+0

不幸的是我必須使用存儲過程來保持項目的一致性。有沒有一種方法可以使用存儲過程? – burnt1ce 2009-07-21 16:03:04

+0

@Burnt:你能編輯你的問題來展示你如何使用存儲過程嗎?這裏的答案顯示了使用存儲過程的一種方法,也許您正在使用另一種方式。請包括一些代碼,它一定會有所幫助。 – 2009-07-21 16:17:18

10

傳遞null到一個存儲過程,使用命令對象。

Set cn = CreateObject("ADODB.Connection") 
Set cmd = CreateObject("ADODB.Command") 
cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Data Source=.\Test" 
Set cmd.ActiveConnection = cn 
cmd.CommandText = "TestTable.sp_ModifyData" 
cmd.CommandType = 4 
cmd.NamedParameters = True 

set cnParam = cmd.CreateParameter("@RowID",3,3,,-1) 
cmd.Parameters.Append cnParam 
set cnParam = cmd.CreateParameter("@AddRemoveModify",3,1,,0) 
cmd.Parameters.Append cnParam 
set cnParam = cmd.CreateParameter("@Value1",3,1,,0) 
cmd.Parameters.Append cnParam 
set cnParam = cmd.CreateParameter("@Value2",8,1,-1,"Test") 
cmd.Parameters.Append cnParam 
set cnParam = cmd.CreateParameter("@value3",5,1,,null) 
cmd.Parameters.Append cnParam 
set cnParam = cmd.CreateParameter("@value4",5,1,,0) 
cmd.Parameters.Append cnParam 
set cnParam = cmd.CreateParameter("@value5",8,1,-1,"") 
cmd.Parameters.Append cnParam 
cmd.Execute 
cn.Close 
Set cmd = Nothing 
Set cn = Nothing 

對不起,我沒有把很多想法命名爲我的數據庫中的字段。

4

嘗試vbNullString或vbNullChar。您可能還需要adParamNullable。

set cnParam = cmd.CreateParameter("@value3",5,1,,vbNullString) 
cnParam.Attributes = adParamNullable 
cmd.Parameters.Append cnParam 

更新:

其實這個工作對我來說:

set cnParam = cmd.CreateParameter("@value3",5,1,,Null) 
cnParam.Attributes = adParamNullable 
cmd.Parameters.Append cnParam 

咦,這工作太:

set cnParam = cmd.CreateParameter("@value3",5,1,,Null) 
cmd.Parameters.Append cnParam 

進入數字。

2

簡短回答:將參數值設置爲Null(VBScript關鍵字)。

相關問題