Passing Data

PostgreSQL 7.3.4 Documentation
Prev | Chapter 4. ECPG - Embedded SQL in C | Next

# 4.5. Passing Data

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.

Prev | Home | Next
Running SQL Commands | Up | Error Handling