2015-01-08 6 views
0

방법저장 프로 시저는 int를 돌려 내 웹의 목록을 반환하려고

SQL 서버에서 실행될 때 내 저장 프로 시저 "GetProductsByProductID는"EXEC sp_name를 사용하여 두 개의 coloumns을 반환 @ 매개 변수

그러나 C# 컨텍스트에서 데이터베이스에서 모델을 업데이트 할 때 반환 값으로 int가 표시됩니다.

나는 SP를 삭제하고 다시 생성 한 다음 모델을 업데이트하려고 시도했다. 작동하지 않는 것 같습니다. 누군가가 이것에 대한 해결책을 가지고 있다면 정말 도움이 될까요?

내 SP 코드 : 내가 한

CREATE PROCEDURE [dbo].[GetProductNameIDsByProdNumber] (@prodList nvarchar(max)) 
AS 
BEGIN 
    SET NOCOUNT ON 
    DECLARE @Err int 

    CREATE TABLE #tempProduct (
    ProductNumber int 
) 
    INSERT INTO #tempProduct (ProductNumber) 
    SELECT 
     * 
    FROM SplitString(@prodList, ',') 

    SELECT 
    c.ProductID, 
    c.ProductName 
    FROM dbo.Product AS c 
    INNER JOIN #tempProduct 
    ON c.ProductNumber = #tempProduct.ProductNumber 

    DROP TABLE #tempProduct 

    SET @Err = @@Error 
    RETURN @Err 
END 

GO 

결과 EXECUTE GetProductNameIDsByProdNumber @ prodList = '1111,4545'

ProductID  ProductName 
    F6F1067B  ABC 
    BD3B2D0A  XYZ 

모델 생성 SP, 나는 상황에서 데이터베이스에서 모델을 업데이트 할 때 파일

public virtual int GetProductNameIDsByProdNumber(string prodList) 
     { 
      var prodListParameter = prodList != null ? 
       new ObjectParameter("prodList", prodList) : 
       new ObjectParameter("prodList", typeof(string)); 

      return ((IObjectContextAdapter)this). 
       ObjectContext.ExecuteFunction("GetProductNameIDsByProdNumber", prodListParameter); 
     } 
+1

저장 프로 시저에서 "RETURN @Err"오류를 반환합니다. Entity Framework에서이 값을 반환하고 있습니다. 당신이 저장 프로 시저에서 캐치를 시도하여 오류를 잡으십시오. – RookieRoll

+0

왜'RETURN @ Err' 부분이 있습니까? 입력에 예외가 발생할 것으로 기대합니까? –

+0

아니요, 해당 부분을 제거했거나 오류를 반환했지만 여전히 동일한 문제가 있습니다. @GertArnold –

답변

0

절차에서 다음과 같이 시도해주세요.

CREATE PROCEDURE [dbo].[GetProductNameIDsByProdNumber] (@prodList nvarchar(max)) 
    AS 
    BEGIN 
     SET NOCOUNT ON 
     DECLARE @Err int 

     CREATE TABLE #tempProduct (
     ProductNumber int 
    ) 
     INSERT INTO #tempProduct (ProductNumber) 
     SELECT 
      * 
     FROM SplitString(@prodList, ',') 
     BEGIN TRY 
      SELECT 
      c.ProductID, 
      c.ProductName 
      FROM dbo.Product AS c 
      INNER JOIN #tempProduct 
      ON c.ProductNumber = #tempProduct.ProductNumber 
     END TRY 
     BEGIN CATCH 
      SET @Err = @@Error 
      RETURN @Err 
     END CATCH 
END 

GO 
+0

컨텍스트 파일의 반환 매개 변수로 여전히 가상 int 가져 오는 중이 시도해보십시오. –

관련 문제