Examples of the EXECUTE IMMEDIATE Statement

The following ESQL/C examples show EXECUTE IMMEDIATE statements in Informix® ESQL/C. Both examples use host variables that contain a CREATE DATABASE statement.
sprintf(cdb_text1, "create database %s", usr_db_id);
EXEC SQL execute immediate :cdb_text1;

sprintf(cdb_text2, "create database %s", usr_db_id2);
EXEC SQL execute immediate :cdb_text2;

The next example shows an SPL program fragment that declares local SPL variables and assigns to them portions of the text of two DDL statements. It then issues an EXECUTE IMMEDIATE statement to drop a table called DYN_TAB, specifying the DROP TABLE statement text in an SPL variable. The second EXECUTE IMMEDIATE statement in this example creates a table of the same name, in this case specifying the CREATE TABLE statement text in a character expression that concatenates the contents of two SPL variables.
   CREATE PROCEDURE myproc()
   DEFINE COLS    VARCHAR(22);
   DEFINE CRTOPER VARCHAR(16);
   DEFINE DRPOPER VARCHAR(16);
   DEFINE TABNAME VARCHAR(16);
   DEFINE QRYSTR  VARCHAR(100);
   ...
   LET CRTOPER = "CREATE TABLE ";
   LET DRPOPER = "DROP TABLE ";
   LET TABNAME = "DYN_TAB";
   LET COLS = "(ID INT, NAME CHAR(20))";
   LET QRYSTR = DRPOPER || TABNAME;
   EXECUTE IMMEDIATE QRYSTR;
	
   EXECUTE IMMEDIATE CRTOPER || TABNAME || COLS;

   END PROCEDURE;