September 26, 2024: PostgreSQL 17 Released!
Supported Versions: Current (17) / 16 / 15 / 14 / 13 / 12
Development Versions: devel
Unsupported versions: 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

Chapter 35. ECPG - Embedded SQL in C

Table of Contents

35.1. The Concept
35.2. Managing Database Connections
35.2.1. Connecting to the Database Server
35.2.2. Choosing a Connection
35.2.3. Closing a Connection
35.3. Running SQL Commands
35.3.1. Executing SQL Statements
35.3.2. Using Cursors
35.3.3. Managing Transactions
35.3.4. Prepared Statements
35.4. Using Host Variables
35.4.1. Overview
35.4.2. Declare Sections
35.4.3. Retrieving Query Results
35.4.4. Type Mapping
35.4.5. Handling Nonprimitive SQL Data Types
35.4.6. Indicators
35.5. Dynamic SQL
35.5.1. Executing Statements without a Result Set
35.5.2. Executing a Statement with Input Parameters
35.5.3. Executing a Statement with a Result Set
35.6. pgtypes Library
35.6.1. Character Strings
35.6.2. The numeric Type
35.6.3. The date Type
35.6.4. The timestamp Type
35.6.5. The interval Type
35.6.6. The decimal Type
35.6.7. errno Values of pgtypeslib
35.6.8. Special Constants of pgtypeslib
35.7. Using Descriptor Areas
35.7.1. Named SQL Descriptor Areas
35.7.2. SQLDA Descriptor Areas
35.8. Error Handling
35.8.1. Setting Callbacks
35.8.2. sqlca
35.8.3. SQLSTATE vs. SQLCODE
35.9. Preprocessor Directives
35.9.1. Including Files
35.9.2. The define and undef Directives
35.9.3. ifdef, ifndef, else, elif, and endif Directives
35.10. Processing Embedded SQL Programs
35.11. Library Functions
35.12. Large Objects
35.13. C++ Applications
35.13.1. Scope for Host Variables
35.13.2. C++ Application Development with External C Module
35.14. Embedded SQL Commands
ALLOCATE DESCRIPTOR — allocate an SQL descriptor area
CONNECT — establish a database connection
DEALLOCATE DESCRIPTOR — deallocate an SQL descriptor area
DECLARE — define a cursor
DESCRIBE — obtain information about a prepared statement or result set
DISCONNECT — terminate a database connection
EXECUTE IMMEDIATE — dynamically prepare and execute a statement
GET DESCRIPTOR — get information from an SQL descriptor area
OPEN — open a dynamic cursor
PREPARE — prepare a statement for execution
SET AUTOCOMMIT — set the autocommit behavior of the current session
SET CONNECTION — select a database connection
SET DESCRIPTOR — set information in an SQL descriptor area
TYPE — define a new data type
VAR — define a variable
WHENEVER — specify the action to be taken when an SQL statement causes a specific class condition to be raised
35.15. Informix Compatibility Mode
35.15.1. Additional Types
35.15.2. Additional/Missing Embedded SQL Statements
35.15.3. Informix-compatible SQLDA Descriptor Areas
35.15.4. Additional Functions
35.15.5. Additional Constants
35.16. Oracle Compatibility Mode
35.17. Internals

This chapter describes the embedded SQL package for PostgreSQL. It was written by Linus Tolke () and Michael Meskes (). Originally it was written to work with C. It also works with C++, but it does not recognize all C++ constructs yet.

This documentation is quite incomplete. But since this interface is standardized, additional information can be found in many resources about SQL.

Submit correction

If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.