VBScript: передача параметра с нулевым значением в хранимую процедуру? - PullRequest
11 голосов
/ 21 июля 2009

В VBScript (среда ASP) возможно ли передать параметр с нулевым значением в хранимую процедуру?

Ответы [ 4 ]

10 голосов
/ 21 июля 2009

Передача нулевого значения хранимой процедуре с использованием объекта команды.

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 голосов
/ 17 ноября 2009

Попробуйте 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 голосов
/ 19 марта 2015

Краткий ответ: установите значение параметра на Null (ключевое слово VBScript).

2 голосов
/ 21 июля 2009

Если вы строите строки и проверяете / защищаетесь от SQL-инъекций, вы можете просто использовать слово null в строке SQL или оператор EXEC с разделителями-запятыми.

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

Вот как использовать null в строке, созданной вручную, для отправки в БД

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