aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/test/preproc/type.pgc
blob: 12459ccde83a2132dc00a8f76e30132323e5914c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <stdio.h>
#include <stdlib.h>

EXEC SQL include ../regression;

EXEC SQL typedef long mmInteger;
EXEC SQL typedef char mmChar;
EXEC SQL typedef short access;	/* matches an unreserved SQL keyword */
EXEC SQL typedef access access_renamed;

exec sql type string is char[11];
typedef char string[11];

exec sql type c is char reference;
typedef char* c;

EXEC SQL BEGIN DECLARE SECTION;
struct TBempl
{
  mmInteger idnum;
  mmChar name[21];
  access accs;
};
EXEC SQL END DECLARE SECTION;

int
main (void)
{
  EXEC SQL BEGIN DECLARE SECTION;
  struct TBempl empl;
  string str;
  access accs_val = 320;
  c ptr = NULL;
  struct varchar
  {
	int len;
	char text[10];
  } vc;
  EXEC SQL END DECLARE SECTION;

  EXEC SQL var vc is varchar[10];
  ECPGdebug (1, stderr);

  empl.idnum = 1;
  EXEC SQL connect to REGRESSDB1;
  if (sqlca.sqlcode)
    {
      printf ("connect error = %ld\n", sqlca.sqlcode);
      exit (sqlca.sqlcode);
    }

  EXEC SQL create table empl
    (idnum integer, name char(20), accs smallint, string1 char(10), string2 char(10), string3 char(10));
  if (sqlca.sqlcode)
    {
      printf ("create error = %ld\n", sqlca.sqlcode);
      exit (sqlca.sqlcode);
    }

  EXEC SQL insert into empl values (1, 'user name', :accs_val, 'first str', 'second str', 'third str');
  if (sqlca.sqlcode)
    {
      printf ("insert error = %ld\n", sqlca.sqlcode);
      exit (sqlca.sqlcode);
    }

  EXEC SQL select idnum, name, accs, string1, string2, string3
	into :empl, :str, :ptr, :vc
	from empl
	where idnum =:empl.idnum;
  if (sqlca.sqlcode)
    {
      printf ("select error = %ld\n", sqlca.sqlcode);
      exit (sqlca.sqlcode);
    }
  printf ("id=%ld name='%s' accs=%d str='%s' ptr='%s' vc='%10.10s'\n", empl.idnum, empl.name, empl.accs, str, ptr, vc.text);

  EXEC SQL disconnect;

  free(ptr);
  exit (0);
}