2014-02-21 3 views
3

오류 :SQL 매개 변수를 찾을 수 없습니다

Procedure or Function '' expects parameter '@Param1' which was not supplied.

저장 프로 시저의 발췌 :

나는 SQL 서버 2012에서 저장 프로 시저를이 절차는 다음과 같은 형태. ..

SELECT * 
FROM Orders 
WHERE Orders.CustomerID = @param1 AND 
    Orders.CustomerJoinDate = @param2 

나는 내 코드 {Visual Studio 2008 사용}에서 이렇게 부릅니다 ...

비주얼 스튜디오에서 호출 방법 : 매개 변수를 통해

먼저 내가 전달하는거야 매개 변수의 배열을 만들 수는 ... 그런

Dim Param() As SqlClient.SqlParameter = 
    New SqlClient.SqlParameter() 
     { 
      New SqlClient.SqlParameter("@Param1", Me.cmbFilter1.Text), 
      New SqlClient.SqlParameter("@Param2", Me.cmbFilter2.Text) 
     } 

내가 루프에 추가 datareader에 의해 실행되는 명령. 나는 누군가가 이것에 올바른 방향으로 날 지점 수 mSQL.ExecuteReader()를 실행하려고

:

mSQLCmd

mSQLCmd.Parameters.Clear() 
mSQLCmd.CommandText = SQLCmd 

For Each sParam As SqlClient.SqlParameter In Param 
    mSQLCmd.Parameters.AddWithValue(sParam.ParameterName, sParam.Value) 
Next 

오류가 발생합니다 ... 위에 설명 된 저장 프로 시저를 호출하도록 설정되어 ? 각 매개 변수가 올바른 값으로 Param()에 포함되어 있는지 확인했습니다.

또한 SQL Server에서 저장 프로 시저를 테스트하고 필요한 두 매개 변수가 올바르게 제공되는지 확인했습니다. VB 쪽에서 뭔가 잘못되었습니다.

+0

은 대소 문자를 구분할 수 있습니다 .... – logixologist

+0

SQL 클라이언트가 실행중인 명령을 확인할 수 있습니까? SP가 실행될 때 매개 변수가 포함되지 않은 것처럼 들립니다. – Drew

+0

또한 @없이 할 수 있습니다 .... 나는 그런 식으로 '새로운 SqlClient.SqlParameter ("param1", Me.cmbFilter1.Text)를 호출합니다. – logixologist

답변

4

저장 프로 시저을 호출하는 경우 이에 따라 을 SqlCommand으로 설정해야합니다.

mSQLCmd.CommandText = SQLCmd 

// add this line! 
mSQLCmd.CommandType = CommandType.StoredProcedure 

그렇지 않으면 호출하려는 저장 프로 시저의 이름이 실행하려는 SQL 명령으로 해석됩니다.

+1

놀랍게도 내가 제공 한 것에서 그것을 추론 할 수 있습니다. 아, 예. 얼굴에 딱딱한 소리를 내 주셔서 감사합니다. ;) – Ccorock

관련 문제