Domanda

Al momento il compito di migrazione dei file Informix ESQLC ad Oracle Pro * C e avere un paio di domande. In primo luogo, usiamo un sacco di funzioni proprietarie Informix nel nostro codice ESQLC embedded come rstrdate(), rtoday() e rjulmdy().

Le eventuali indicazioni su come convertire questi in Oracle Pro * C?

Un'altra cosa sto lottando con la comprensione è la data di Oracle tipo di dati. In Informix, usiamo tipo lungo nel nostro codice embedded sql C per le variabili host che fare con le date per le tabelle Informix.

Ma in Oracle, sono sotto l'impressione che le date non vengono comunicate avanti e indietro tutto il tempo, ma come char? O possiamo ancora indicare le variabili host come tipo lungo?

È stato utile?

Soluzione

Googling "Oracle OCI Data" esce con funzioni quali OCIDateTimeFromText(), OCIDateSysdate() e forse OCIDateTimeToArray() corrispondenti alle funzioni di ESQL / C è il nome. C'è un tipo di OCIDate che probabilmente corrisponde più da vicino a un dtime_t ESQL / C (è probabile che include i componenti di tempo) rispetto a una data di Informix (int4 o lunga in ESQL / C), ma è più probabile che il tipo si dovrebbe utilizzare in il processo di traduzione.

Altri suggerimenti

Giusto per aggiungere a quanto sopra, ho creato un metodo per duplicare la funzione Informix rtoday proprietario ():

    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;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top