To pass data from the program to the database, for example as
parameters in a query, or to pass data from the database back to
the program, the C variables that are intended to contain this data
need to be declared in a specially marked section, so the embedded
SQL preprocessor is made aware of them.
This section starts with
EXEC SQL BEGIN DECLARE SECTION;
and ends with
EXEC SQL END DECLARE SECTION;
Between those lines, there must be normal C variable declarations, such as
int x;
char foo[16], bar[16];
The declarations are also echoed to the output file as a normal C
variables, so there's no need to declare them again. Variables
that are not intended to be used with SQL commands can be declared
normally outside these special sections.
The definition of a structure or union also must be listed inside a
DECLARE section. Otherwise the preprocessor cannot
handle these types since it does not know the definition.
The special types VARCHAR and VARCHAR2
are converted into a named struct for every variable. A
declaration like:
VARCHAR var[180];
is converted into:
struct varchar_var { int len; char arr[180]; } var;
This structure is suitable for interfacing with SQL datums of type
VARCHAR.
To use a properly declared C variable in an SQL statement, write
:varname where an expression is
expected. See the previous section for some examples.