Dear list,

I am migrating an Oracle database to PostgreSQL and the last step I must perform is to convert several Pro*C programs into PostgreSQL embedded SQL. I work on AIX 5.3 TL9 64-bits, on which I have built PostgreSQL 8.3.8 in 64-bits too.
I am a newbie in Embedded SQL and I am facing several problems / questions.
I hope you could help me.


1. Initially, the Pro*C program include an external file, having #ifdef lines at the beginning, using : EXEC SQL INCLUDE "file1.h";
If I let this command in the ".pgc" file, the preprocess with ecpg failed :
$ ecpg prog1.pgc
./file1.h:17: ERROR: syntax error at or near "EXTERN"

The first lines of the "file1.h" file are :
#if defined(var1)
EXTERN int a; ... ...

I see in the 8.2.15 documentation (even if this release is a bit old now) a comment indicating : /Unfortunately "exec sql include" can NOT be thought of as simply inserting the included file at the appropriate place. For instance, having #ifdef lines in the included file does not work, you must use "exec sql ifdef", even though having #ifdef's in the original source file is fine./

So, I have replaced the line
EXEC SQL INCLUDE "file1.h";
by (at the beginning of the embedded SQL program) :
#include "file1.h";
and now the preprocess succeeded :
$ ecpg prog1.pgc
$

=> Any explanation please ?


2. In examples of PostgreSQL embedded SQL, I saw these includes :
#include <stdio.h>
#include <stdlib.h>
#include <sqltypes.h>
without any comments.

=> Do I need to specify them anyway ?


3. Do "best practices" to convert Pro*C program in PostgreSQL exist ? What are the main differences between Pro*C and embedded SQL program in PostgreSQL ?


Thank you very much for your help !
Regards,
Alexandra

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to