VBScript: передача параметра с нулевым значением в хранимую процедуру?

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


person burnt1ce    schedule 21.07.2009    source источник
comment
Бернт, можете ли вы предоставить пример кода о том, как вы хотели бы передавать нули... встроенное построение строки или типизированные параметры в объекте команды ADO?   -  person p.campbell    schedule 21.07.2009


Ответы (4)


Передача 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

Извините, я не особо задумывался об именах полей в моей базе данных.

person Tester101    schedule 21.07.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

Иди разберись.

person Kuyenda    schedule 17.11.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
person p.campbell    schedule 21.07.2009
comment
К сожалению, мне приходится использовать хранимую процедуру для обеспечения согласованности в моем проекте. Есть ли способ использовать хранимые процедуры? - person burnt1ce; 21.07.2009
comment
@Burnt: вы можете отредактировать свой вопрос, чтобы показать, как вы используете хранимые процедуры? Ответ здесь показывает один из способов использования хранимых процедур, возможно, вы используете другой способ. Пожалуйста, включите код, это определенно поможет. - person p.campbell; 21.07.2009

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

person Keith    schedule 19.03.2015