#include <stdio.h>
#include <stdlib.h>
#include <string.h>
EXEC SQL BEGIN DECLARE SECTION;
int var_c1;
char var_c2[21] = { 0x00 };
EXEC SQL END DECLARE SECTION;
int main(int argc, char* argv[])
{
/* 步骤1: 建立连接 */
EXEC SQL WHENEVER SQLERROR SQLPRINT; /* 声明异常发生时的处理动作统一为打印消息 */
EXEC SQL CONNECT TO postgres@localhost:5432 USER postgres/xxxx; /* 指定连接的目标数据库,用户名,密码 */
/* 步骤2: 利用游标执行查询 */
EXEC SQL DECLARE foo_bar CURSOR FOR SELECT c1, c2 FROM tb1; /* 声明一个游标使之用于执行SELECT文 */
EXEC SQL OPEN foo_bar; /* 打开游标从而使SELECT文被执行 */
EXEC SQL FETCH foo_bar INTO :var_c1, :var_c2; /* 获取一行数据 */
printf("C1: %d, C2: %s\n", var_c1, var_c2);
EXEC SQL CLOSE foo_bar; /* 关闭所打开的游标 */
/* 步骤3: 关闭连接 */
EXEC SQL DISCONNECT CURRENT;
return 0;
}
/* Processed by ecpg (3.1.1) */
/* These include files are added by the preprocessor */
#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
#line 1 "ESQL_CONNECT.pgc"
/* End of automatic include section */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* exec sql begin declare section */
#line 6 "ESQL_CONNECT.pgc"
int var_c1 ;
#line 7 "ESQL_CONNECT.pgc"
char var_c2 [ 21 ] = { 0x00 } ;
/* exec sql end declare section */
#line 8 "ESQL_CONNECT.pgc"
int main(int argc, char* argv[])
{
/* 步骤1: 建立连接 */
/* exec sql whenever sqlerror sqlprint ; */
#line 13 "ESQL_CONNECT.pgc"
{ ECPGconnect(__LINE__, 0, "postgres@localhost:5432" , "postgres" , "asdf1234" , NULL, 0);
#line 14 "ESQL_CONNECT.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 14 "ESQL_CONNECT.pgc"
/* 步骤2: 利用游标执行查询 */
/* declare foo_bar cursor for select c1 , c2 from tb1 */
#line 17 "ESQL_CONNECT.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, "declare foo_bar cursor for select c1 , c2 from tb1 ", ECPGt_EOIT, ECPGt_EORT);
#line 18 "ESQL_CONNECT.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 18 "ESQL_CONNECT.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, "fetch foo_bar", ECPGt_EOIT,
ECPGt_int,&(var_c1),(long)1,(long)1,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
ECPGt_char,(var_c2),(long)21,(long)1,21*sizeof(char),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
#line 19 "ESQL_CONNECT.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 19 "ESQL_CONNECT.pgc"
printf("C1: %d, C2: %s\n", var_c1, var_c2);
{ ECPGdo(__LINE__, 0, 1, NULL, "close foo_bar", ECPGt_EOIT, ECPGt_EORT);
#line 23 "ESQL_CONNECT.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 23 "ESQL_CONNECT.pgc"
/* 步骤3: 关闭连接 */
{ ECPGdisconnect(__LINE__, "CURRENT");
#line 26 "ESQL_CONNECT.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
#line 26 "ESQL_CONNECT.pgc"
return 0;
}