1

기본 ASP에서 SQL Server 2005 데이터베이스 테이블에 행을 삽입하고 있습니다.`프로 시저 또는 함수가 매개 변수를 기대합니까? '

Procedure or function 'replace_matl_form_insert' expects parameter '@matl_no', which was not supplied.

내가 매개 변수를 공급하고있다 :

나는 다음과 같은 오류가 발생합니다. 유형이 일치하며 그 오류가 계속 발생합니다. 다음은 삽입에 사용되는 고전적인 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

.CreateParameter ("@matl_no"가 작동하지 않습니까? – bummi

+0

@bummi 아니요, 동일한 오류가 있습니다. –

답변

2

을 난 당신이 매개 변수 이름의 시작에 "@"를 필요가 있다고 생각 CommandType4 (adCmdStoredProc)으로 설정하십시오.

당신은 (어떤 상태로) 당신의 SP에 매개 변수를 보내지 않으려면 16,
CMDInsForm.CommandType = 4 

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

+1

그게 전부입니다! 감사! –

0

나는 @ 매개 변수 이름이 누락 된 것 같습니다. 시도 대신의

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

: 시도
또한

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

편집 :

set parm = CMDInsForm.CreateParameter ("matl_no", ... 
+0

동일한 오류가 발생합니다./ –

0

당신은에 NULL 값을 할당하여

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

처럼 SP 매개 변수에 대한 디폴트 값을 초기화 할 수 있습니다 매개 변수를 사용하면이 오류가 발생하지 않습니다.

Procedure or function 'replace_matl_form_insert' expects parameter '@matl_no', which was not supplied. 
관련 문제