VBScript:将带有null值的参数传递给存储过程?

bur*_*1ce 11 sql-server parameters vbscript ado

在VBScript(ASP环境)中,是否可以将带有null值的参数传递给存储过程?

Tes*_*101 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
Run Code Online (Sandbox Code Playgroud)

对不起,我没有太多考虑命名我的数据库中的字段.


Kuy*_*nda 5

试试 vbNullString 或 vbNullChar。您可能还需要 adParamNullable。

set cnParam = cmd.CreateParameter("@value3",5,1,,vbNullString)  
cnParam.Attributes = adParamNullable  
cmd.Parameters.Append cnParam
Run Code Online (Sandbox Code Playgroud)

更新:

实际上这对我有用:

set cnParam = cmd.CreateParameter("@value3",5,1,,Null)  
cnParam.Attributes = adParamNullable  
cmd.Parameters.Append cnParam
Run Code Online (Sandbox Code Playgroud)

呵呵,这也有效:

set cnParam = cmd.CreateParameter("@value3",5,1,,Null)  
cmd.Parameters.Append cnParam
Run Code Online (Sandbox Code Playgroud)

去搞清楚。


p.c*_*ell 2

如果您正在构建字符串并检查/防范 SQL 注入,则只需在 SQL 字符串中使用单词 null 或逗号分隔的 EXEC 语句即可。

'calling a stored proc.
strSQL = "EXEC UpdateCustomer @CustomerID=" & iCustomerID + ",@PhoneNumber=null"
Run Code Online (Sandbox Code Playgroud)

以下是如何在手动构建的字符串中使用 null 发送到数据库

strSQL = "UPDATE Customer SET PhoneNumber = null WHERE CustomerID = " + iCustomerID
Run Code Online (Sandbox Code Playgroud)