Re: sql + C - Mailing list pgsql-sql

From Haller Christoph
Subject Re: sql + C
Date
Msg-id 200110080912.LAA02812@rodos
Whole thread Raw
In response to sql + C  (Esteban Gutierrez Abarzua <esgutier@sauce.chillan.ubiobio.cl>)
List pgsql-sql
I'm having some experience with C embedded SQL 
and what I can see at first sight is 
1) DECLARE CURSOR statement - missing colon: 
EXEC SQL DECLARE C77 CURSOR FOR select datname from  pg_user,pg_database
where usename= :user and datdba= :usesysid;
2) before OPEN you have to declare and set the where clause variables: 
user and usesysid are not declared nor set 
3) VARCHAR base[50]: 
is probably not the right type, because VARCHAR always uses a 4 byte 
header to determine the length, whereas the name type is of 32 byte 
fixed length. A simple char name[32] should do it. 

If the problem persists, you should inspect the sqlca structure 
after every step of EXEC SQL execution for more information on 
what's going wrong. 
By the way, I'm porting an application to PostgreSQL and I have 
decided to get rid off embedded SQL completely, because I feel 
much more comfortable with the functions the libpq - C Library
package is providing. Especially, you never again have to worry 
about data types, because the PQgetvalue function retrieves 
everything as string. 
Regards, Christoph 
> 
> #include<string.h>
> EXEC SQL BEGIN DECLARE SECTION;
>         VARCHAR base[50];
> EXEC SQL END DECLARE SECTION;
> EXEC SQL INCLUDE sqlca;
> EXEC SQL DECLARE C77 CURSOR FOR select datname from  pg_user,pg_database
> where usename= :user and datdba=usesysid;
> main ()
> { 
>   EXEC SQL CONNECT TO mybase;
>   if(sqlca.sqlcode < 0)
>   { 
>     printf(" error");
>     exit(1);
>   }
> // now I want to get results 
>  EXEC SQL OPEN C77;
>  EXEC SQL FETCH IN C77 INTO :base; // here, it's the problem, I can't to
> get the result on the base variable. I think that can be the variable
> type.  then how should be the data type for ":base" variable? ........
> .......
> .......
> .....
> ...
> .
> .
> .
> .
> pg_database has the  attributes as follow:
> 
> mybase=> \d pg_database
>       Table "pg_database"
>  Attribute |  Type   | Modifier
> -----------+---------+----------
>  datname   | name    |         --->I can't to get the "datname"......why?
>  datdba    | integer |
>  encoding  | integer |
>  datpath   | text    |
> 


pgsql-sql by date:

Previous
From: Bhuvan A
Date:
Subject: How to Return Unique Elements From An Array?
Next
From: BELLON Michel
Date:
Subject: Re: select 5/2???