В VBScript (среда ASP) можно ли передать параметр с нулевым значением в хранимую процедуру?
VBScript: Передача параметра с нулевым значением в хранимую процедуру?
Ответ 1
Передача 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
Извините, я не думал о том, чтобы называть поля в моей базе данных.
Ответ 2
Попробуйте vbNullString или vbNullChar. Вам также может понадобиться adParamNullable.
set cnParam = cmd.CreateParameter("@value3",5,1,,vbNullString)
cnParam.Attributes = adParamNullable
cmd.Parameters.Append cnParam
Update:
На самом деле это сработало для меня:
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
Показать рисунок.
Ответ 3
Если вы создаете строки и проверяете/защищаете от SQL Injection, вы можете просто использовать слово null в своей строке SQL или оператор EXEC с разделителями-запятыми.
'calling a stored proc.
strSQL = "EXEC UpdateCustomer @CustomerID=" & iCustomerID + ",@PhoneNumber=null"
Здесь, как использовать null в построенной вручную строке для отправки в DB
strSQL = "UPDATE Customer SET PhoneNumber = null WHERE CustomerID = " + iCustomerID
Ответ 4
Короткий ответ: установите для параметра значение Null
(ключевое слово VBScript).