2013-10-04 6 views
1

두 날짜 (문자열)를 사용하고 DB2400에서 결과 세트를 리턴하는 프로 시저가 있습니다. Entity Framework (4.0)를 사용하면 다른 매개 변수로 동일한 결과가 표시됩니다 (결과가 다르면 [iSeries GUI에서 프로 시저를 실행하여 검증]). 첫 번째 코드와 같이 설정 매개 변수OS400 DB2 SP의 유효하지 않은 매개 변수로 인해 Entity Framework 오류가 발생합니다.

MyEntities.MY_DB2_PROCEDURE('09262013','09262013').ToList(); 

MyEntities.MY_DB2_PROCEDURE('09272013','09272013').ToList(); 

빌드 & 실행; 18 개의 레코드가 제대로 반환됩니다. 새로운 매개 변수 세트로 빌드하고 실행하십시오. 동일한 결과 세트가 리턴됩니다. 다시

: -는 iSeries GUI에서 같은 DB에 대해 실행

CALL MY_DB2_PROCEDURE('09262013','09262013') 

CALL MY_DB2_PROCEDURE('09272013','09272013') 

는 다른 결과를 않습니다.

+0

IBM i의 계획 캐시에있는 문장을보고 어떤 일이 발생했는지 확인 했습니까? – WarrenT

+0

당신은 어느 릴리스입니까? – WarrenT

+0

6.1 - 아직 계획 캐시를 확인하지 않았습니다. 지금 확인 중이 야. – steamrolla

답변

0

이 절차에서는 두 개의 "날짜 문자열"을 매개 변수로 사용합니다.

public static string ToDateParameter(this DateTime dt) 
{ 
    //Format of procedure's parameters: MMDDYYYY 
    return dt.Month.ToString() + dt.Day.ToString() + dt.Year.ToString(); 
} 

이로 업데이트하고 더 이상 오류 : I 인해 한 자리 일/개월에 문제가 발생, 내 DateTime의 변환이 확장 방법을 사용하고 있었다 처음

public static string ToDateParameter(this DateTime dt) 
{ 
    string day; 
    string month; 
    /* 
    * Format of procedure's parameters: MMDDYYYY 
    * Procedure expects string of 8 characters for dates; adding 0's in front of single-digit days & months. 
    */ 
    day = dt.Day.ToString().Length == 1 ? "0" + dt.Day.ToString() : dt.Day.ToString(); 
    month = dt.Month.ToString().Length == 1 ? "0" + dt.Month.ToString() : dt.Month.ToString(); 

    return month + day + dt.Year.ToString(); 
} 

을, 나는 'didn를

System.Data.EntityCommandExecutionException: The data reader is incompatible with the specified `Property`. A member of the type, `Property`, does not have a corresponding column in the data reader with the same name. 

업데이트 : 나는 SP를 작성하고 동의하지 않았다 위스콘신 t으로 인해 같은 EF 오류로 내 매개 변수를 확인하는 것도 생각 그 매개 변수들. 그래도 DB2가 오류를 다시 보내지 않고 EF 오류를 볼 것으로 예상하지 않았습니다.

+1

SP를 작성한 경우 매개 변수에 표준 날짜 형식을 사용하는 것이 좋습니다. 이렇게하면 .NET 프로그램과 같은 다른 응용 프로그램에 더 친숙한 인터페이스를 제공 할 수 있습니다. (바라기를 당신의 날짜는 데이터베이스에 저장되지 않습니다.) – WarrenT

+0

나는 SP를 쓰지 않았고 나는 100 % 당신에게 동의합니다. Thankfully 히, 우리 날짜는 DB에서 그것과 같지 않다. – steamrolla