2007-08-14 06:01:54 -04:00
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
|
|
exec sql include ../regression;
|
|
|
|
|
|
|
|
|
|
EXEC SQL WHENEVER sqlerror sqlprint;
|
|
|
|
|
EXEC SQL WHENEVER sqlwarning sqlprint;
|
|
|
|
|
EXEC SQL WHENEVER not found sqlprint;
|
|
|
|
|
|
|
|
|
|
EXEC SQL TYPE customer IS
|
|
|
|
|
struct
|
|
|
|
|
{
|
|
|
|
|
varchar name[50];
|
|
|
|
|
int phone;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
EXEC SQL TYPE cust_ind IS
|
|
|
|
|
struct ind
|
|
|
|
|
{
|
|
|
|
|
short name_ind;
|
|
|
|
|
short phone_ind;
|
|
|
|
|
};
|
|
|
|
|
|
2009-05-20 12:39:56 -04:00
|
|
|
int main()
|
2007-08-14 06:01:54 -04:00
|
|
|
{
|
|
|
|
|
EXEC SQL begin declare section;
|
|
|
|
|
customer custs1[10];
|
|
|
|
|
cust_ind inds[10];
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
varchar name[50];
|
|
|
|
|
int phone;
|
|
|
|
|
} customer2;
|
|
|
|
|
customer2 custs2[10];
|
|
|
|
|
struct customer3
|
|
|
|
|
{
|
|
|
|
|
varchar name[50];
|
|
|
|
|
int phone;
|
|
|
|
|
} custs3[10];
|
|
|
|
|
struct customer4
|
|
|
|
|
{
|
|
|
|
|
varchar name[50];
|
|
|
|
|
int phone;
|
|
|
|
|
} custs4;
|
|
|
|
|
int r;
|
2008-03-02 05:54:11 -05:00
|
|
|
varchar onlyname[2][50];
|
2007-08-14 06:01:54 -04:00
|
|
|
EXEC SQL end declare section;
|
|
|
|
|
|
|
|
|
|
ECPGdebug(1, stderr);
|
2010-11-23 15:27:50 -05:00
|
|
|
|
2007-08-14 06:01:54 -04:00
|
|
|
EXEC SQL connect to REGRESSDB1;
|
|
|
|
|
|
|
|
|
|
EXEC SQL create table customers (c varchar(50), p int);
|
|
|
|
|
EXEC SQL insert into customers values ('John Doe', '12345');
|
|
|
|
|
EXEC SQL insert into customers values ('Jane Doe', '67890');
|
|
|
|
|
|
|
|
|
|
EXEC SQL select * INTO :custs1:inds from customers limit 2;
|
|
|
|
|
printf("custs1:\n");
|
|
|
|
|
for (r = 0; r < 2; r++)
|
|
|
|
|
{
|
|
|
|
|
printf( "name - %s\n", custs1[r].name.arr );
|
|
|
|
|
printf( "phone - %d\n", custs1[r].phone );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EXEC SQL select * INTO :custs2:inds from customers limit 2;
|
|
|
|
|
printf("\ncusts2:\n");
|
|
|
|
|
for (r = 0; r < 2; r++)
|
|
|
|
|
{
|
|
|
|
|
printf( "name - %s\n", custs2[r].name.arr );
|
|
|
|
|
printf( "phone - %d\n", custs2[r].phone );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EXEC SQL select * INTO :custs3:inds from customers limit 2;
|
|
|
|
|
printf("\ncusts3:\n");
|
|
|
|
|
for (r = 0; r < 2; r++)
|
|
|
|
|
{
|
|
|
|
|
printf( "name - %s\n", custs3[r].name.arr );
|
|
|
|
|
printf( "phone - %d\n", custs3[r].phone );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
EXEC SQL select * INTO :custs4:inds[0] from customers limit 1;
|
|
|
|
|
printf("\ncusts4:\n");
|
|
|
|
|
printf( "name - %s\n", custs4.name.arr );
|
|
|
|
|
printf( "phone - %d\n", custs4.phone );
|
|
|
|
|
|
2008-03-02 05:54:11 -05:00
|
|
|
EXEC SQL select c INTO :onlyname from customers limit 2;
|
|
|
|
|
printf("\nname:\n");
|
|
|
|
|
for (r = 0; r < 2; r++)
|
|
|
|
|
{
|
|
|
|
|
printf( "name - %s\n", onlyname[r].arr );
|
|
|
|
|
}
|
|
|
|
|
|
2007-08-14 06:01:54 -04:00
|
|
|
EXEC SQL disconnect all;
|
|
|
|
|
|
2017-08-17 12:39:20 -04:00
|
|
|
return 0;
|
2007-08-14 06:01:54 -04:00
|
|
|
}
|