经典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值。