문제

현재 Informix ESQLC 파일을 Oracle Pro*C로 마이그레이션하는 임무를 맡고 있으며 몇 가지 질문이 있습니다. 먼저, 우리는 내장 된 ESQLC 코드 내에서 많은 독점적 인 Informix 기능을 사용합니다. rstrdate(), rtoday(), 그리고 rjulmdy().

Oracle Pro*C에서이를 변환하는 방법에 대한 포인터가 있습니까?

내가 이해하는 데 어려움을 겪고있는 또 다른 것은 Oracle Date Datatype입니다. Informix에서는 Informix 테이블의 날짜를 다루는 호스트 변수에 대해 임베디드 SQL C 코드에서 Long Long을 사용합니다.

그러나 Oracle에서는 날짜가 오랫동안 앞뒤로 전달되지는 않다는 인상을 받고 있습니다. 아니면 여전히 호스트 변수를 유형으로 지정할 수 있습니까?

도움이 되었습니까?

해결책

인터넷 검색 "Oracle OCI Date"는 다음과 같은 기능이 제공됩니다. OCIDateTimeFromText(), OCIDateSysdate() 그리고 아마도 OCIDateTimeToArray() ESQL/C 함수에 해당합니다. 있습니다 OCIDate 아마도 ESQL/C에 더 가까운 유형 dtime_t (Informix 날짜 (int4 이상)보다 시간 구성 요소가 포함될 수 있지만, 번역 프로세스에서 사용해야 할 유형 일 가능성이 높습니다.

다른 팁

위에 추가하기 위해 Informix 독점 함수 rtoday ()를 복제하는 메소드를 만들었습니다.

    int rtoday(long *today) {
  EXEC SQL BEGIN DECLARE SECTION;
      time_t t;
  EXEC SQL END DECLARE SECTION;

  EXEC SQL WHENEVER SQLERROR DO sql_error("Oracle error\n");
  EXEC SQL CONNECT :"user/pass@dbname";
  EXEC SQL SELECT (new_time(sysdate,'EDT','GMT') - to_date('31-dec-1899','dd-mon-yyyy')) INTO :t FROM DUAL;

  printf( "C   Time = %d\n", time(NULL) );
  printf( "SQL Time = %d\n", t );

  *today=t;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top