Czy w VBScript (środowisku ASP) można przekazywać do procedury składowanej parametr o wartości pustej?VBScript: Przekazywanie parametru z wartością pustą do procedury składowanej?
Odpowiedz
Podczas budowania ciągów znaków i sprawdzania/ochrony przed iniekcją SQL można po prostu użyć słowa null w łańcuchu SQL lub w instrukcji EXEC z ograniczeniem przecinków.
'calling a stored proc.
strSQL = "EXEC UpdateCustomer @CustomerID=" & iCustomerID + ",@PhoneNumber=null"
Oto jak korzystać zerowy w ręcznie zbudowany ciąg wysłać do DB
strSQL = "UPDATE Customer SET PhoneNumber = null WHERE CustomerID = " + iCustomerID
Niestety muszę użyć procedury przechowywanej, aby zachować spójność w moim projekcie. Czy istnieje sposób, że mogę korzystać z procedur przechowywanych? – burnt1ce
@Burnt: Czy możesz edytować swoje pytanie, aby pokazać, w jaki sposób korzystasz z procedur przechowywanych? Odpowiedź tutaj pokazuje jeden sposób korzystania z procedur przechowywanych, być może używasz innego sposobu. Proszę podać kod, na pewno pomoże. –
Przechodząc zerowy do procedury przechowywanej, używając obiektu polecenia.
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
Niestety nie zastanawiałem się nad nazwami pól w mojej bazie danych.
Spróbuj vbNullString lub vbNullChar. Możesz także potrzebować adParamNullable.
set cnParam = cmd.CreateParameter("@value3",5,1,,vbNullString)
cnParam.Attributes = adParamNullable
cmd.Parameters.Append cnParam
Aktualizacja:
Właściwie to pracował dla mnie:
set cnParam = cmd.CreateParameter("@value3",5,1,,Null)
cnParam.Attributes = adParamNullable
cmd.Parameters.Append cnParam
Huh, to pracował też:
set cnParam = cmd.CreateParameter("@value3",5,1,,Null)
cmd.Parameters.Append cnParam
Go figurę.
Krótka odpowiedź: ustaw wartość parametru na Null
(słowo kluczowe VBScript).
Spalony, możesz podać przykładowy kod, w jaki sposób chcesz przekazać wartości null ... wbudowany łańcuch znaków lub wpisane parametry w obiekcie polecenia ADO? –