摘要: 整理归纳了ESQL相关的资料,方便日后查询回顾之用。

前言

ESQL是指Extended Structured Query Language[1],主要作用是将sql语言和其他高级语言相结合,实现单纯用sql无法实现的功能。

Dynamic SQL

PREPARE

PREPARE是Dynamic SQL独有的关键字,其语法为:PREPARE 语句名 FROM 主变量
其中主变量是字符串类型的SQL语句,可以包含任意个占位符?语句名是自定义字符串,用以标识这个语句。
值得注意的是,语句名的作用域为整个程序,所以不同的PREPARE步骤中包含的语句名必须不同。
下面是一个示例:

EXEC SQL BEGIN DECLARE SECTION;
char prep[] = "INSERT INTO mf_table VALUES(?,?,?)";
char name[30];
char car[30];
double num;
EXEC SQL END DECLARE SECTION;
EXEC SQL PREPARE prep_stat FROM :prep;

EXECUTE

EXECUTE语句是Dynamic SQL独有的关键字,其语法为:EXECUTE 语句名 USING 主变量 | DESCRIPTOR 描述符名
其中语句名是指曾经在PREPARE步骤中定义过的语句,主变量用来逐一按次序填充先前定义语句时留下的占位符,下面是一个示例:

EXEC SQL EXECUTE prep_stat USING :name, :car, :num;

USING字句中的主变量数量必须与PREPARE阶段中占位符的数量一致,且变量类型需要一一对应。