Other SQL instructions
Genero BDL static SQL syntax implements common Data Manipulation Statements such as SELECT, INSERT, UPDATE and DELETE. Data Definition Language statements such as CREATE TABLE, CREATE INDEX, CREATE SEQUENCE and their corresponding ALTER and DROP statements are also part of the static SQL grammar. These are supported with a syntax limited to the standard SQL clauses. For example, Genero BDL might not support the most recent CREATE TABLE storage options supported by IBM® Informix® SQL.
Since the first days of the Informix 4GL language, the SQL language has been extended, and it has become so large that it's impossible to embed all the existing new statements without introducing grammar conflicts with the I4GL language. In addition, each DB vendor has improved the standard SQL language with proprietary SQL statements that are not portable; it would not be a good idea to use these specific instructions if you plan to make your application run with different types of database engines.
However, the Genero BDL static SQL is constantly being improved with standard SQL syntax that works with most types of database servers. For example, Genero BDL supports the ANSI outer join syntax, constraints definition in DDL statements, sequence instructions, BIGINT and BOOLEAN data types, and there is more to come.
If a statement is unsupported in static SQL, that does not mean that you cannot execute it. If you want to execute an SQL instruction that is not part of the static SQL grammar, you can use Dynamic SQL as follows:
- Use PREPARE + EXECUTE for statements that do not generated a result set
- Use (PREPARE/) DECLARE + OPEN for statements returning a result set
- Use EXECUTE IMMEDIATE if no SQL parameters are required and no result set is generated
Dynamic SQL instructions take a string as the input, so there is no limitation regarding the SQL text you can execute. However, only one statement can be executed at a time. Preferably, write your SQL statements directly in static SQL when possible, because it makes the code more readable and the syntax is checked at compiled time.
For more details about statements supported in the static SQL syntax, see Static SQL.
ALTER ACCESS_METHOD
ALTER FRAGMENT
ALTER FUNCTION
ALTER PROCEDURE
ALTER ROUTINE
ALTER SECURITY LABEL COMPONENT
CREATE ACCESS_METHOD
CREATE AGGREGATE
CREATE CAST
CREATE DISTINCT TYPE
CREATE EXTERNAL TABLE Statement
CREATE FUNCTION (with body)
CREATE OPAQUE TYPE
CREATE OPCLASS
CREATE PROCEDURE (with body)
CREATE ROLE
CREATE ROUTINE FROM
CREATE ROW TYPE
CREATE SCHEMA
CREATE SECURITY LABEL
CREATE SECURITY LABEL COMPONENT
CREATE SECURITY POLICY
CREATE TRIGGER
CREATE VIEW
CREATE XADATASOURCE
CREATE XADATASOURCE TYPE
DROP ACCESS_METHOD
DROP AGGREGATE
DROP CAST
DROP FUNCTION
DROP OPCLASS
DROP PROCEDURE
DROP ROLE
DROP ROUTINE
DROP ROW TYPE
DROP SECURITY
DROP TRIGGER
DROP TYPE
DROP XADATASOURCE
DROP XADATASOURCE TYPE
EXECUTE FUNCTION
EXECUTE PROCEDURE
GRANT FRAGMENT
INFO
MERGE
OUTPUT
RELEASE SAVEPOINT
RENAME COLUMN
RENAME DATABASE
RENAME SECURITY
REVOKE FRAGMENT
SAVE EXTERNAL DIRECTIVES
SAVEPOINT
SET AUTOFREE
SET COLLATION
SET CONSTRAINTS
SET DATASKIP
SET DEBUG FILE
SET ENCRYPTION PASSWORD
SET ENVIRONMENT
SET INDEXES
SET LOG
SET OPTIMIZATION
SET PDQPRIORITY
SET ROLE
SET SESSION AUTHORIZATION
SET STATEMENT CACHE
SET TRANSACTION
SET TRIGGERS
START VIOLATIONS TABLE
STOP VIOLATIONS TABLE