我正在从Classic ASP向SQL Server 2005数据库表中插入一行。
我收到以下错误:
过程或函数'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 [...]
我完全难过了。是否有任何人有任何建议可能是什么,或者只是在黑暗中拍摄?我不在乎它听起来有多疯狂。
答案 0 :(得分:3)
我认为在参数名称的开头需要“@”:
set parm = CMDInsForm.CreateParameter ("@matl_no", adChar, adParamInput, 8, Trim(matl_no))
修改强>
另外,请尝试将CommandType
设置为4
(adCmdStoredProc
):
CMDInsForm.CommandType = 4
答案 1 :(得分:0)
我认为您缺少参数名称中的@
。尝试:
set parm = CMDInsForm.CreateParameter ("@matl_no", ...
而不是:
set parm = CMDInsForm.CreateParameter ("matl_no", ...
答案 2 :(得分: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.