下列 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;