2009-10-19 6 views
0

J'utilise ASP classique et essaye de créer des paramètres pour un appel de procédure stockée pour une procédure qui a des paramètres facultatifs (= NULL). L'un des paramètres, @maxrows, est requis.Paramètres ASP classiques passant des valeurs nulles (ou vides) et ordonnant

Lorsque je tente de passer par l'appel suivant:

With objCommand 
.ActiveConnection = oConn 
.CommandText = "usp_client_onsite_search" 
.CommandType = adCmdStoredProc 

.Parameters.Append .CreateParameter("maxRows",adInteger,adParamInput,4,10) 
.Parameters.Append .CreateParameter("Firstname", adVarchar, adParamInput,50 , vbnull) 

End With 

serveur SQL montre ce "exec usp_client_onsite_search 10, '1'"

En d'autres termes, les paramètres ne sont pas passés selon appeler; ils sont passés selon l'ordre. Et certains pourraient ne pas être présents dans chaque appel.

Répondre

1

Essayez ceci:

.Parameters.Append 
.CreateParameter("Firstname", adVarchar, adParamInput , 50 , Null) 
1

IIRC ce comportement dépend du pilote SQL que vous utilisez. J'ai vu ce comportement dans le passé aussi, et changer le pilote corrigerait ce comportement.

Pour SQL Server, il existe plusieurs options pour ADO, telles que le pilote ODBC, le pilote OLEDB, le pilote MSDASQL, le pilote SQL Server Native Client, etc. Lequel utilisez-vous?

2

Je ne suis pas sûr si vous demandez à propos de la valeur NULL ou de l'ordre des paramètres.

Sur l'ordre des paramètres, si vous définissez la propriété NamedParameters de l'objet de commande pour « True », les paramètres seront passés à travers par nom (see the MSDN for more details on this property)

En ce qui concerne la valeur NULL, au lieu de passer vbNull, essayez passage NULL Cependant, je ne sais pas si cela fonctionnera ou non

Cependant, si les paramètres nommés fonctionnent, vous pouvez être en mesure de le faire s'il existe des valeurs par défaut pour les paramètres de la procédure stockée que vous appelez. De cette façon, le fait de ne pas spécifier le paramètre donnera une valeur NULL dans le sproc cible

Questions connexes