Language element reference v17
An embedded SQL statement allows your client application to interact with the server. An embedded directive is an instruction to the ECPGPlus compiler.
You can embed any EDB Postgres Advanced Server SQL statement in a C program. Each statement must begin with the keywords EXEC SQL
and must be terminated with a semi-colon (;). In the C program, a SQL statement takes the form:
Where sql_command_body
represents a standard SQL statement. You can use a host variable anywhere that the SQL statement expects a value expression. For more information about substituting host variables for value expressions, see Declaring host variables.
ECPGPlus extends the PostgreSQL server-side syntax for some statements. Syntax differences are noted in the reference information that follows. For a complete reference to the supported syntax of other SQL commands, see the PostgreSQL core documentation.
ALLOCATE DESCRIPTOR
Use the ALLOCATE DESCRIPTOR
statement to allocate an SQL descriptor area:
Where:
array_size
is a variable that specifies the number of array elements to allocate for the descriptor.array_size
can be anINTEGER
value or a host variable.descriptor_name
is the host variable that contains the name of the descriptor or the name of the descriptor. This value can take the form of an identifier, a quoted string literal, or of a host variable.variable_count
specifies the maximum number of host variables in the descriptor. The default value ofvariable_count
is100
.
The following code fragment allocates a descriptor named emp_query
that can be processed as an array (emp_array)
:
CALL
Use the CALL
statement to invoke a procedure or function on the server. The CALL
statement works only on EDB Postgres Advanced Server. The CALL
statement comes in two forms. The first form is used to call a function:
The second form is used to call a procedure:
Where:
program_name
is the name of the stored procedure or function that theCALL
statement invokes. The program name can be schema qualified, package qualified, or both. If you don't specify the schema or package in which the program resides, ECPGPlus uses the value ofsearch_path
to locate the program.actual_arguments
specifies a comma-separated list of arguments required by the program. Eachactual_argument
corresponds to a formal argument expected by the program. Each formal argument can be anIN
parameter, anOUT
parameter, or anINOUT
parameter.:ret_variable
specifies a host variable that receives the value returned if the program is a function.:ret_indicator
specifies a host variable that receives the indicator value returned if the program is a function.
For example, the following statement invokes the get_job_desc
function with the value contained in the :ename
host variable and captures the value returned by that function in the :job
host variable:
CLOSE
Use the CLOSE
statement to close a cursor and free any resources currently in use by the cursor. A client application can't fetch rows from a closed cursor. The syntax of the CLOSE
statement is:
Where cursor_name
is the name of the cursor closed by the statement. The cursor name can take the form of an identifier or of a host variable.
The OPEN
statement initializes a cursor. Once initialized, a cursor result set remains unchanged unless the cursor is reopened. You don't need to CLOSE
a cursor before reopening it.
To manually close a cursor named emp_cursor
, use the command:
A cursor is automatically closed when an application terminates.
COMMIT
Use the COMMIT
statement to complete the current transaction, making all changes permanent and visible to other users. The syntax is:
Where database_name
is the name of the database or host variable that contains the name of the database in which the work resides. This value can take the form of an unquoted string literal or of a host variable.
For compatibility, ECPGPlus accepts the COMMENT
clause without error but doesn't store any text included with the COMMENT
clause.
Include the RELEASE
clause to close the current connection after performing the commit.
For example, the following command commits all work performed on the dept
database and closes the current connection:
By default, statements are committed only when a client application performs a COMMIT
statement. Include the -t
option when invoking ECPGPlus to specify for a client application to invoke AUTOCOMMIT
functionality. You can also control AUTOCOMMIT
functionality in a client application with the following statements:
and
CONNECT
Use the CONNECT
statement to establish a connection to a database. The CONNECT
statement is available in two forms. One form is compatible with Oracle databases, and the other is not.
The first form is compatible with Oracle databases:
Where:
user_name
is a host variable that contains the role that the client application uses to connect to the server.password
is a host variable that contains the password associated with that role.connection_id
is a host variable that contains a slash-delimited user name and password used to connect to the database.
Include the AT
clause to specify the database to which the connection is established. database_name
is the name of the database to which the client is connecting. Specify the value in the form of a variable or as a string literal.
Include the USING
clause to specify a host variable that contains a null-terminated string identifying the database to which to establish the connection.
The ALTER AUTHORIZATION
clause is supported for syntax compatibility only. ECPGPlus parses the ALTER AUTHORIZATION
clause and reports a warning.
Using the first form of the CONNECT
statement, a client application might establish a connection with a host variable named user
that contains the identity of the connecting role and a host variable named password
that contains the associated password using the following command: