Newsgroup: it.comp.software.database
Titolo: Oracle Pro*C - Embedded SQL

Ciao a tutti, 
chiedo aiuto su una questione riguardante Oracle 9i e in particolare la
precompilazione di codice C ed SQL Embedded.  
Ho un file pippo.pc che dņ in pasto al precompilatore Oracle, ma mi da'
errore su tutte le righe di codice del file che contengono dichiarazioni
SQL.
La parte iniziale del risultato della precompilazione č il seguente: 
Errore di sintassi a riga 32, colonna 2, file D:\miacartella\pippo.pc:
Errore alla riga 32, colonna 2 nel file D:\miacartella\pippo.pc:
 MIASTRUTTURA miastruct;
1
PCC-S-02201, Trovato il simbolo "MIASTRUTTURA" anziché uno dei seguenti:
 auto,
   char, const, double, enum, extern, float, int, long,
   ulong_varchar, OCIBFileLocator OCIBlobLocator,
   OCIClobLocator, OCIDateTime, OCIExtProcContext, OCIInterval,
   OCIRowid, OCIDate, OCINumber, OCIRaw, OCIString, register,
   short, signed, sql_context, sql_cursor, static, struct,
   typedef, union, unsigned, utext, uvarchar, varchar, void,
   volatile, a typedef name, a precompiled header, exec oracle,
   exec oracle begin, exec, exec sql, exec sql begin,
   exec sql end, exec sql type, exec sql var, exec sql include,
Il simbolo "enum," č stato sostituito per permettere a "MIASTRUTTURA" di
continuare.
Se vado a vedere le righe incriminate in pippo.pc, trovo che sono le
seguenti:
 EXEC SQL BEGIN DECLARE SECTION;
 MIASTRUTTURA miastruct;
 EXEC SQL END DECLARE SECTION;
MIASTRUTTURA č ovviamente una struct definita con typedef nel file .h
incluso nel file .pc.
Come risolvere ? qualcuno si č scontrato con questo problema ?!
Grazie per qualsiasi risposta,
Andrea
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

> Torakiki

 Ovviamente fai la prova con la dichiarazione direttamente dentro il .pc
Già fatto, tra le tante prove, e non funziona ugualmente.
La cosa strana è che sotto UNIX tutto funziona regolarmente, la
precompilazione dello *stesso* codice va a buon fine.
Se provi, sotto Windows, invece, a compilare un codice fatto così:
<CODE>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#define  SQLCODE sqlca.sqlcode
#define  SQLNULL  1403
#define  SQLNONE  -1405
#define  SQLPRES  -1
#define  SQLOK  0
#define  SQLKO  1
EXEC SQL INCLUDE SQLCA;
typedef struct {
        char MRN[19];
        int  SEQUENCE;
        int  OFFICIAL_VERSION;
} MYSTRUCT;
void myfunc()
{
     EXEC SQL BEGIN DECLARE SECTION;
     MYSTRUCT A;
     EXEC SQL END DECLARE SECTION;
     EXEC SQL SELECT WGTTRS_MRN,
                     WGTTRS_SEQUENCE
              INTO   :A.MRN,
                     :A.SEQUENCE
              FROM WGTTRS
              WHERE WGTTRS_MRN = :A.MRN
              AND WGTTRS_OFFICIAL_VERSIONE = :A.OFFICIAL_VERSION;
}
</CODE>
...la precompilazione fallisce.  Lo stesso codice, sotto UNIX, viene
compilato regolarmente.
Il mio problema è che non posso stravolgere il codice, devo scrivere delle
applicazioni secondo uno standard previsto dal cliente.
Andrea

> Torakiki

 (quella su Unix più recente)
In realtà, io sto utilizzando la versione 9.0.1.1.1 sotto Windows, mentre
sotto UNIX la versione usata è la 8.1.7.2.0 (quindi meno recente).

Soluzione: usando i file header di Visual C++ (stavo usando quelli di C++
Builder), tutto procede bene.
Grazie per l'aiuto ;-)