| PostgreSQL 8.3.4 Documentation | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 32. ECPG - Embedded SQL in C | Fast Forward | Next |
To include an external file into your embedded SQL program, use:
EXEC SQL INCLUDE filename;
The embedded SQL preprocessor will look for a file named filename.h, preprocess it, and include it in the resulting C output. Thus, embedded SQL statements in the included file are handled correctly.
Note that this is not the same as:
#include <filename.h>
because this file would not be subject to SQL command preprocessing. Naturally, you can continue to use the C #include directive to include other header files.
Note: The include file name is case-sensitive, even though the rest of the EXEC SQL INCLUDE command follows the normal SQL case-sensitivity rules.
Similar to the directive #define that is known from C, embedded SQL has a similar concept:
EXEC SQL DEFINE name; EXEC SQL DEFINE name value;
So you can define a name:
EXEC SQL DEFINE HAVE_FEATURE;
And you can also define constants:
EXEC SQL DEFINE MYNUMBER 12; EXEC SQL DEFINE MYSTRING 'abc';
Use undef to remove a previous definition:
EXEC SQL UNDEF MYNUMBER;
Of course you can continue to use the C versions #define and #undef in your embedded SQL program. The difference is where your defined values get evaluated. If you use EXEC SQL DEFINE then the ecpg preprocessor evaluates the defines and substitutes the values. For example if you write:
EXEC SQL DEFINE MYNUMBER 12; ... EXEC SQL UPDATE Tbl SET col = MYNUMBER;
then ecpg will already do the substitution and your C compiler will never see any name or identifier MYNUMBER. Note that you cannot use #define for a constant that you are going to use in an embedded SQL query because in this case the embedded SQL precompiler is not able to see this declaration.
You can use the following directives to compile code sections conditionally:
Checks a name and processes subsequent lines if name has been created with EXEC SQL define name.
Checks a name and processes subsequent lines if name has not been created with EXEC SQL define name.
Starts processing an alternative section to a section introduced by either EXEC SQL ifdef name or EXEC SQL ifndef name.
Checks name and starts an alternative section if name has been created with EXEC SQL define name.
Ends an alternative section.
Example:
exec sql ifndef TZVAR; exec sql SET TIMEZONE TO 'GMT'; exec sql elif TZNAME; exec sql SET TIMEZONE TO TZNAME; exec sql else; exec sql SET TIMEZONE TO TZVAR; exec sql endif;
No comments could be found for this page.
Please use this form to add your own comments regarding your experience with particular features of PostgreSQL, clarifications of the documentation, or hints for other users. Please note, this is not a support forum, and your IP address will be logged. If you have a question or need help, please see the faq, try a mailing list, or join us on IRC. Note that submissions containing URLs or other keywords commonly found in 'spam' comments may be silently discarded. Please contact the webmaster if you think this is happening to you in error.
In order to submit a comment, you must have a community account.
* denotes required field