2014-11-08 3 views
2

나는 다음과 같은 코드를 가지고 :EF6 - ExecuteSqlCommandAsync - 반환 매개 변수를 가져옵니다 (스칼라 변수 오류를 선언)

object[] parameters = 
    { 
     new SqlParameter("@val1", val1), 
     new SqlParameter("@val2", val2), 
     new SqlParameter 
     { 
      ParameterName = "@retVal", 
      SqlDbType = SqlDbType.Int, 
      Direction = ParameterDirection.ReturnValue, 
      Value = -1 
     } 
    }; 

    await context.Database.ExecuteSqlCommandAsync("EXEC @retVal = Example_SP @val1, @val2", parameters); 

내가 사용 SP가 괜찮 및 SQL MS 벌금에 값을 반환합니다. 하지만 EF를 사용하여 실행할 때 나는 스칼라 변수 @retVal '을 선언해야한다고 들었다. 내 SqlParameter가하는 일이 아닌가 ??

일부는 '다른 곳에서'제안한 것처럼 '@'기호를 제거하려고했지만 '@'기호는 선택 사항이며 아무런 차이가 없습니다.

ExecuteSqlCommandAsync를 사용하여 오류를 발생시키지 않고 SP에서 반환 값을 얻으려면 어떻게해야합니까?

감사합니다.

+0

예에서'@ retVal'은 반환 값이 아니며 SP의 반환 값에 할당되는 Output 매개 변수 일뿐입니다. –

답변

4

ParameterDirection.ReturnValue 대신 ParameterDirection.Output을 사용해야합니다.