2014-09-16 2 views
0

C#으로 devart를 사용하여 저장 프로 시저에서 잘못된 행을 반환 To | NrOfOfferedChats] 날짜가 값과 비교하여 정확합니다.Oracle 데이터베이스 내가 저장 프로 시저와 오라클 데이터베이스가

(예)

[ From       | To       | Chats ] 
2014-09-15 08:00:00,000000000 2014-09-15 09:00:00,000000000 61 
2014-09-15 09:00:00,000000000 2014-09-15 10:00:00,000000000 96 
2014-09-15 10:00:00,000000000 2014-09-15 11:00:00,000000000 113 
2014-09-15 11:00:00,000000000 2014-09-15 12:00:00,000000000 80 

은 지금은 C# 코드에서 픽업 :

using (var oraclePackage = new OraclePackage()) 
     { 
      oraclePackage.Connection = DbConnection; 
      oraclePackage.PackageName = @"CHAOS.""HiddenPackageName"""; 

      oraclePackage.Parameters.AddWithValue("In_Conf", conf); 
      oraclePackage.Parameters.AddWithValue("In_From", from); 
      oraclePackage.Parameters.AddWithValue("In_To", to); 
      oraclePackage.Parameters.AddWithValue("Out_Cursor", null).Direction = ParameterDirection.Output; 
      oraclePackage.Parameters["Out_Cursor"].OracleDbType = OracleDbType.Cursor; 

      oraclePackage.ExecuteProcedure(@"""CalculateChats""", oraclePackage.Parameters, true); 

      using (OracleDataReader oracleReader = ((OracleCursor)oraclePackage.Parameters["Out_Cursor"].Value).GetDataReader()) 
      { 
       if (oracleReader.HasRows) 
       { 
        while (oracleReader.Read()) 
        { 
         oracleReader; 
        } 
       } 
      } 
     } 

그리고 오라클 데이터 출발지 oracleReader =이다 : 0015-09-14 1시 : 00000000000, 수신자 : 0015-09-14 02 : 00 : 000000000, 채팅 : 80

지금 질문 : 데이터베이스에서 C# 코드로 변경 될 수있는 원인은 무엇입니까? 그것을 해결하는 방법에 대한 제안 uld는 apreciated 수 있습니다.

+2

글쎄, 한 가지는 C#이 호출하는 것과 다른 프로 시저 (CalculateChats vs GetStatistics)로 PL/SQL을 표시하는 것입니다. – OldProgrammer

+0

또한, "Started"의 데이터 유형은 무엇입니까? 게시 한 코드에서 '타임 스탬프'와 'varchar2'로 번갈아 처리합니다. 동일한 코드를 호출하는 동작이 달라지면 두 가지 클라이언트 응용 프로그램에서 NLS 설정이 다르므로 다양한 암시 적 데이터 형식 변환이 수행 될 때 서로 다른 동작을하게됩니다. 명시 적 데이터 유형 변환 만 수행하도록 코드를 수정하면 문제가 해결됩니다. –

+0

@OldProgrammer 미안하지만, 보스의 주문 패키지의 이름을 변경했다 :) –

답변

0

2 일 동안이 arround를 던지는 후 나는

CAST(TO_TIMESTAMP(SUBSTR("Started", 0, 13), 'yyyy-mm-dd hh24:MI') + 1/24 AS TIMESTAMP) 

내가 해요 2014년 9월 16일 8시 0분 0초 16 9 월 14 2시 0분 0초에에서 타임 스탬프를 변환되었다 발견 그런 식으로 변환 된 이유는 아직 모르지만 :

CAST(TO_CHAR("Started", 'YYYY-MM-dd HH24') || ':00:00' AS TIMESTAMP) 

이 문제를 해결하는 것으로 보입니다.