In VBScript (ambiente ASP), è possibile passare un parametro con un valore nullo a una stored procedure?VBScript: passaggio di un parametro con un valore null a una stored procedure?
risposta
Se si stanno creando stringhe e si esegue il controllo/protezione da SQL Injection, è possibile utilizzare semplicemente la parola null nella stringa SQL o l'istruzione EXEC delimitata da virgole.
'calling a stored proc.
strSQL = "EXEC UpdateCustomer @CustomerID=" & iCustomerID + ",@PhoneNumber=null"
Ecco come utilizzare null in una stringa costruita manualmente per inviare al DB
strSQL = "UPDATE Customer SET PhoneNumber = null WHERE CustomerID = " + iCustomerID
Purtroppo devo usare la stored procedure per mantenere la coerenza nel mio progetto. C'è un modo per utilizzare stored procedure? – burnt1ce
@Burnt: sei in grado di modificare la tua domanda per mostrare come stai usando le stored procedure? La risposta qui mostra un modo per usare le stored procedure, forse stai usando un altro modo. Si prega di includere del codice, sarà sicuramente di aiuto. –
passando null a una stored procedure, utilizzando un oggetto comando.
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
Spiacente di non aver riflettuto molto sul nome dei campi nel mio database.
Provare vbNullString o vbNullChar. Potrebbe inoltre essere necessario adParamNullable.
set cnParam = cmd.CreateParameter("@value3",5,1,,vbNullString)
cnParam.Attributes = adParamNullable
cmd.Parameters.Append cnParam
Aggiornamento:
In realtà questo ha lavorato per me:
set cnParam = cmd.CreateParameter("@value3",5,1,,Null)
cnParam.Attributes = adParamNullable
cmd.Parameters.Append cnParam
Eh, questo ha lavorato anche:
set cnParam = cmd.CreateParameter("@value3",5,1,,Null)
cmd.Parameters.Append cnParam
Go figura.
Risposta breve: impostare il valore del parametro su Null
(parola chiave VBScript).
Bruciato, è possibile fornire un codice di esempio su come si desidera passare i null ... creazione di stringhe inline o parametri digitati nell'oggetto Command di ADO? –