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