经典ASP参数传递空值(或空parms)并订购

经典ASP参数传递空值(或空parms)并订购

问题描述:

我正在使用传统的ASP并尝试为具有可选参数(= NULL)的过程的存储过程调用创建参数。其中一个参数@maxrows是必需的。经典ASP参数传递空值(或空parms)并订购

当尝试通过以下呼叫经过:

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 

SQL服务器示出了该 “EXEC usp_client_onsite_search 10, '1'”

换言之,这些参数没有被传递根据命名;他们按顺序通过。有些可能不会出现在每个电话中。

试试这个:

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

IIRC此行为取决于您使用SQL驱动程序。过去我也看到过这种行为,而改变驱动程序会纠正这种行为。

对于SQL Server,ADO有几个选项,例如ODBC驱动程序,OLEDB驱动程序,MSDASQL驱动程序,SQL Server Native Client驱动程序等。您正在使用哪一个?

我不确定您是否询问NULL或参数顺序。

在参数顺序,如果你的命令对象的NamedParameters属性设置为“True”,那么参数将通过域名(see the MSDN for more details on this property)

对于NULL传递强似是vbNull,尝试通过但是,我不确定这是否可以工作

但是,如果您得到的命名参数正常工作,那么您可能可以在存储过程中调用存储过程中的参数时使用默认值。这种方式根本没有指定参数会在目标存储器中给出一个NULL值。