In VBScript (ASP-Umgebung) ist es möglich, einen Parameter mit einem Nullwert an eine gespeicherte Prozedur zu übergeben?VBScript: Übergeben eines Parameters mit einem Nullwert an eine gespeicherte Prozedur?
Antwort
Wenn Sie Strings erstellen und SQL Injection überprüfen/schützen, können Sie einfach das Wort null in Ihrer SQL-Zeichenfolge oder einer durch Kommas getrennten EXEC-Anweisung verwenden.
'calling a stored proc.
strSQL = "EXEC UpdateCustomer @CustomerID=" & iCustomerID + ",@PhoneNumber=null"
Hier ist, wie in einem von Hand gebaut String null verwenden, um die DB
strSQL = "UPDATE Customer SET PhoneNumber = null WHERE CustomerID = " + iCustomerID
Leider muss ich gespeicherte Prozedur verwenden, um Konsistenz in meinem Projekt zu erhalten. Gibt es eine Möglichkeit, gespeicherte Prozeduren zu verwenden? – burnt1ce
@Burnt: Können Sie Ihre Frage bearbeiten, um zu zeigen, wie Sie gespeicherte Prozeduren verwenden? Die Antwort hier zeigt eine Möglichkeit, gespeicherte Prozeduren zu verwenden, vielleicht verwenden Sie einen anderen Weg. Bitte fügen Sie Code bei, es wird definitiv helfen. –
Passing null auf eine gespeicherte Prozedur zu senden, ein Befehlsobjekt verwenden.
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
Entschuldigung, ich habe nicht viel darüber nachgedacht, die Felder in meiner Datenbank zu benennen.
Versuchen Sie VbNullString oder VbNullChar. Möglicherweise benötigen Sie auch adParamNullable.
set cnParam = cmd.CreateParameter("@value3",5,1,,vbNullString)
cnParam.Attributes = adParamNullable
cmd.Parameters.Append cnParam
Update:
Eigentlich ist das für mich gearbeitet:
set cnParam = cmd.CreateParameter("@value3",5,1,,Null)
cnParam.Attributes = adParamNullable
cmd.Parameters.Append cnParam
Huh, das auch gearbeitet:
set cnParam = cmd.CreateParameter("@value3",5,1,,Null)
cmd.Parameters.Append cnParam
Go figure.
Kurze Antwort: Setzen Sie den Parameterwert auf Null
(VBScript-Schlüsselwort).
Verbrannt, können Sie einen Beispielcode für das Übergeben von Nullwerten ... Inline-String-Erstellung oder typisierte Parameter auf Ihrem ADO-Command-Objekt bereitstellen? –