2009-07-21 24 views

Respuesta

2

Si está creando cadenas y comprobando/protegiendo contra la inyección de SQL, puede simplemente usar la palabra nulo en su cadena SQL, o una declaración EXEC delimitada por comas.

'calling a stored proc. 
strSQL = "EXEC UpdateCustomer @CustomerID=" & iCustomerID + ",@PhoneNumber=null" 

Aquí es cómo utilizar nulo en una cadena construida manualmente para enviar a la base de datos

strSQL = "UPDATE Customer SET PhoneNumber = null WHERE CustomerID = " + iCustomerID 
+0

Lamentablemente tengo que usar el procedimiento almacenado para mantener la consistencia en mi proyecto. ¿Hay alguna manera de que pueda usar los procedimientos almacenados? – burnt1ce

+0

@Burnt: ¿puede editar su pregunta para mostrar cómo está utilizando los procedimientos almacenados? La respuesta aquí muestra una forma de usar los procedimientos almacenados, quizás esté usando otra forma. Por favor, incluye un código, definitivamente ayudará. –

10

Pasando nulo en un procedimiento almacenado, utilizando un objeto de 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 

Lo siento, no puse mucha atención en nombrar los campos en mi base de datos.

4

Pruebe vbNullString o vbNullChar. Es posible que también necesite adParamNullable.

set cnParam = cmd.CreateParameter("@value3",5,1,,vbNullString) 
cnParam.Attributes = adParamNullable 
cmd.Parameters.Append cnParam 

Actualización:

En realidad esto funcionó para mí:

set cnParam = cmd.CreateParameter("@value3",5,1,,Null) 
cnParam.Attributes = adParamNullable 
cmd.Parameters.Append cnParam 

Huh, esto funcionó demasiado:

set cnParam = cmd.CreateParameter("@value3",5,1,,Null) 
cmd.Parameters.Append cnParam 

Ir figura.

2

Respuesta corta: establezca el valor del parámetro en Null (palabra clave VBScript).

Cuestiones relacionadas