2009-07-21 156 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关键字)。

相关问题