Обсуждение: Datatypes in embedded SQL

Поиск
Список
Период
Сортировка

Datatypes in embedded SQL

От
"Mic"
Дата:
Hey all.

I've a question on embedded sql.
Thing is, I'm trying to declare a struct in the embedded SQL part in my C
program, but the preprocessor complains about an 'unknown data type in line
162'. Is it not possible at all in Postgres to declare a structure? I tried
writing out the DBstruct in the SQL DECLARE section, that didn't work
either.
When i don't use the struct, passing 4 variables instead, all goes well.
I Am using Postgres server 7.0.2, and the pgcl preprocessor, running under
Mandrake Linux.

Regards,
Mic


preveously defined:

typedef struct {  int  line_nr,       type;  char nick[10],       line[161];
} DBstruct;

/* ------------------------------------------------------DBinsRecord--------
does   : Inserts a line in the db
args   :
return : error code (0 = ok)---------------------------------------------------------------------------
*/
static int DBinsRecord (  DBstruct *Values
)
{  EXEC SQL BEGIN DECLARE SECTION;   DBstruct *pRec = Values;  EXEC SQL END DECLARE SECTION;
  EXEC SQL     INSERT INTO channel     (line_nr     ,nick     ,type     ,line)     VALUES     ( :pRec->line_nr     ,
:pRec->nick    , :pRec->type     , :pRec->line);
 
  return (sqlca.sqlcode);
}






Re: Datatypes in embedded SQL

От
Michael Meskes
Дата:
On Mon, Mar 26, 2001 at 08:35:05PM +0200, Mic wrote:
> Thing is, I'm trying to declare a struct in the embedded SQL part in my C
> program, but the preprocessor complains about an 'unknown data type in line
> 162'. Is it not possible at all in Postgres to declare a structure? I tried

Which data type are you using? It is possible to declare a struct inside
the declare section.

> writing out the DBstruct in the SQL DECLARE section, that didn't work
> either.

You have to write it out there or else the statement using the struct won't
work because the preproc never saw the definition.

> typedef struct {
>    int  line_nr,
>         type;
>    char nick[10],
>         line[161];
> } DBstruct;

That won't work. ECPG will not see this part of the code. Did you try the
latest CVS version aka PostgreSQL 7.1?

Michael

-- 
Michael Meskes
Michael@Fam-Meskes.De
Go SF 49ers! Go Rhein Fire!
Use Debian GNU/Linux! Use PostgreSQL!