(I apologize in advance for such basic questions, but...)
I saw in some of the test sources for ecpg that I can use the
EXEC SQL TYPE foo IS int;
statement to tell ecpg about an artificial data type. I also noticed that I can use EXEC SQL TYPE to tell ecpg about structures. But I have a few questions about this:
1) It looks like I have to define each data type twice: once for ecpg and once for C. Is that correct or is there something basic that I am missing?
2) I could not seem to include a varchar inside of a struct - the ecpg preprocessor got confused by that. My construct looked something like:
typedef struct
{
int id;
varchar data[50];
} foo;
EXEC SQL TYPE foo IS
struct
{
int id;
varchar data[50];
};
When I tried to declare a 'foo' inside of the DECLATION SECTION, ecpg seemed to produce some code that my GNU CC didn't understand. (If it would help, I can send in the actual source and resulting .c file).
3) If I use EXEC SQL TYPE to declare a structure, it doesn't look like I can use an array of these structures to retreive multiple rows. Using the previous example structures, I want to do something like:
EXEC SQL BEGIN DECLARATION SECTION;
foo records[5];
EXEC SQL END DECLARATION SECTION;
EXEC SQL select * into :records from bar limit 5;
ecpg doesn't seem to understand this construct, but if I take members out of the structure and declare them as:
EXEC SQL BEGIN DECLARATION SECTION;
int id[5];
char data[5][50];
EXEC SQL END DECLARATION SECTION;
that works (yes, I know I changed from varchar to char in this example).
I am using ecpg (and postgresql) version 7.1.3.
Thanks in advance for any help.
-- Murphy