1

ClassicASPからSQLServer2005データベーステーブルに行を挿入しています。

次のエラーが発生します。

プロシージャまたは関数'replace_matl_form_insert'には、指定されていないパラメータ'@matl_no'が必要です。

パラメータを指定しています。タイプは一致しますが、まだそのエラーが発生します。これが挿入に使用される古典的なaspコードです

     set CMDInsForm = Server.CreateObject("ADODB.Command")
     CMDInsForm.ActiveConnection = CONN
     CMDInsForm.CommandText = "dbo.replace_matl_form_insert"

     set parm = CMDInsForm.CreateParameter ("matl_no", adChar, adParamInput, 8, Trim(matl_no))
     CMDInsForm.Parameters.Append parm
     For each X in CMDInsForm.Parameters
          Response.Write err_msg & X.Name & ":" & X.Value & "<BR>"
     Next

     CMDInsForm.Execute

ご覧のとおり、パラメーターを循環して、名前と値を出力します。名前matl_noと正しい値が出力されます。

これは、それを取得するストアドプロシージャのセクションです。

ALTER PROCEDURE [dbo].[replace_matl_form_insert]
    (@matl_no char(8))
 AS [...]

私は完全に困惑しています。誰かがそれが何であるかについて何か提案がありますか、または単に暗闇の中でショットを撮りますか?私はそれがどれほどクレイジーに聞こえるかは気にしません。

4

3 に答える 3

3

パラメータ名の先頭に「@」が必要だと思います。

set parm = CMDInsForm.CreateParameter ("@matl_no", adChar, adParamInput, 8, Trim(matl_no))

編集
また、に設定してみCommandTypeてください4(これはadCmdStoredProc):

CMDInsForm.CommandType = 4

http://www.w3schools.com/ado/prop_comm_commandtype.asp

于 2012-11-30T17:41:09.817 に答える
0

@パラメータ名にが欠けていると思います。試す:

set parm = CMDInsForm.CreateParameter ("@matl_no", ...

それ以外の :

set parm = CMDInsForm.CreateParameter ("matl_no", ...
于 2012-11-30T17:40:59.820 に答える
0

パラメータをSPに送信したくない場合(ある条件で)、次のようにデフォルト値をSPパラメータに初期化できます。

ALTER PROCEDURE [dbo].[replace_matl_form_insert]
    (@matl_no char(8)=NULL)
 AS [...] 

パラメータにNULL値を割り当てることにより、このエラーは発生しません

Procedure or function 'replace_matl_form_insert' expects parameter '@matl_no', which was not supplied.
于 2013-06-20T07:51:34.873 に答える