2009-10-19 65 views
0

我正在使用傳統的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'」

換言之,這些參數沒有被傳遞根據命名;他們按順序通過。有些可能不會出現在每個電話中。

回答

1

試試這個:

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

IIRC此行爲取決於您使用SQL驅動程序。過去我也看到過這種行爲,而改變驅動程序會糾正這種行爲。

對於SQL Server,ADO有幾個選項,例如ODBC驅動程序,OLEDB驅動程序,MSDASQL驅動程序,SQL Server Native Client驅動程序等。您正在使用哪一個?

2

我不確定您是否詢問NULL或參數順序。

在參數順序,如果你的命令對象的NamedParameters屬性設置爲「True」,那麼參數將通過域名(see the MSDN for more details on this property)

對於NULL傳遞強似是vbNull,嘗試通過但是,我不確定這是否可以工作

但是,如果您得到的命名參數正常工作,那麼您可能可以在存儲過程中調用存儲過程中的參數時使用默認值。這種方式根本沒有指定參數會在目標存儲器中給出一個NULL值。