34.1. The Concept
  An embedded SQL program consists of code written in an ordinary
   programming language, in this case C, mixed with SQL commands in
   specially marked sections.  To build the program, the source code (
  
   *.pgc
  
  )
   is first passed through the embedded SQL preprocessor, which converts it
   to an ordinary C program (
  
   *.c
  
  ), and afterwards it can be processed by a C
   compiler.  (For details about the compiling and linking see
  
   Section 34.10
  
  .)
   Converted ECPG applications call functions in the libpq library
   through the embedded SQL library (ecpglib), and communicate with
   the PostgreSQL server using the normal frontend-backend protocol.
 
Embedded SQL has advantages over other methods for handling SQL commands from C code. First, it takes care of the tedious passing of information to and from variables in your C program. Second, the SQL code in the program is checked at build time for syntactical correctness. Third, embedded SQL in C is specified in the SQL standard and supported by many other SQL database systems. The PostgreSQL implementation is designed to match this standard as much as possible, and it is usually possible to port embedded SQL programs written for other SQL databases to PostgreSQL with relative ease.
As already stated, programs written for the embedded SQL interface are normal C programs with special code inserted to perform database-related actions. This special code always has the form:
EXEC SQL ...;
These statements syntactically take the place of a C statement. Depending on the particular statement, they can appear at the global level or within a function.
  Embedded
  
   SQL
  
  statements follow the case-sensitivity rules of
   normal
  
   SQL
  
  code, and not those of C. Also they allow nested
   C-style comments as per the SQL standard. The C part of the
   program, however, follows the C standard of not accepting nested comments.
   Embedded
  
   SQL
  
  statements likewise use SQL rules, not
   C rules, for parsing quoted strings and identifiers.
   (See
  
   Section 4.1.2.1
  
  and
  
   Section 4.1.1
  
  respectively.  Note that
   ECPG assumes that
  
   standard_conforming_strings
  
  is
  
   on
  
  .)
   Of course, the C part of the program follows C quoting rules.
 
The following sections explain all the embedded SQL statements.