Informix Esqlc를 Oracle Pro*로 마이그레이션합니다. c
-
13-09-2019 - |
문제
현재 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;
}
제휴하지 않습니다 StackOverflow