0

従来の ASP を使用しており、オプション (=NULL) パラメーターを持つプロシージャーのストアド プロシージャー呼び出し用のパラメーターを作成しようとしています。パラメータの 1 つである @maxrows は必須です。

次の呼び出しで渡そうとすると:

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'」を示しています。

つまり、パラメーターは名前に従って渡されません。それらは順番に渡されます。また、各通話に参加していない人もいます。

4

3 に答える 3

2

NULLとパラメータの順序のどちらについて質問しているのかわかりません。

パラメータの順序で、コマンドオブジェクトのNamedParametersプロパティを「True」に設定すると、パラメータは名前で渡されます(このプロパティの詳細については、MSDNを参照してください)。

NULLについては、vbNullを渡す代わりに、Nullを渡してみてください。しかし、これがうまくいくかどうかはわかりません。

ただし、名前付きパラメーターを機能させる場合は、呼び出しているストアード・プロシージャーにパラメーターのデフォルト値がある場合に機能する可能性があります。このように、パラメータを指定しないだけでは、ターゲットsprocにNULL値が与えられます。

于 2009-10-19T22:14:22.883 に答える
1

代わりにこれを試してください:

.Parameters.Append 
.CreateParameter("Firstname", adVarchar, adParamInput , 50 , Null )
于 2009-10-19T21:09:38.307 に答える
1

IIRCこの動作は、使用するSQLドライバーによって異なります。私も過去にこの動作を見たことがあり、ドライバーを変更するとこの動作が修正されます。

SQL Serverの場合、ade ODBCドライバー、OLEDBドライバー、MSDASQLドライバー、SQL Serverネイティブクライアントドライバーなど、ADOにはいくつかのオプションがあります。どちらを使用していますか?

于 2009-10-19T21:10:19.023 に答える