EXECUTE IMMEDIATE 语句的示例

下列 ESQL/C 示例展示 GBase 8s ESQL/C 中的 EXECUTE IMMEDIATE 语句。两个示例都是用包含 CREATE DATABASE 语句的主变量。
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;

下一个示例展示 SPL 程序片断,声明本地 SPL 变量并分配给它们两个 DDL 语句文本的部分。然后发出 EXECUTE IMMEDIATE 语句来删除名为 DYN_TAB 的表,指定 SPL 变量中的 DROP TABLE 语句文本。本示例中的第二个 EXECUTE IMMEDIATE 语句创建一个同名的表,在此指定字符表达式中的 CREATE TABLE 语句文本,该表达式将两个 SPL 变量的内容连在一起。
   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;