EXECUTE IMMEDIATE 语句

使用 EXECUTE IMMEDIATE 语句来执行等同于 PREPARE、EXECUTE 和 FREE 语句实现的那些任务,但只作为单个操作。

请随同 GBase 8s ESQL/C 和 SPL 使用该动态 SQL 语句。

语法

元素 描述 限制 语法
char_expr 取值为字符数据类型的表达式 必须取值为CHAR、LVARCHAR、NCHAR、NVARCHAR 或 VARCHAR 数据类型 表达式
statement 有效 SQL 语句的文本 请参阅下列的 statement_var 的相同章节 请参阅本章节。
statement _var 包含 statement 的变量或(在 ESQL/C 中)以分号分隔的语句列表 必须是先前声明的 CHAR、NCHAR、NVARCHAR 或 VARCHAR (或在 SPL 中,LVARCHAR)类型的变量。请参阅 EXECUTE IMMEDIATE 和限制性语句对有效语句的限制 Language specific

用法

EXECUTE IMMEDIATE 语句动态地执行在程序执行期间构造的单个 SQL 语句(或在 ESQL/C 例程中,以分号分隔的 SQL 语句列表)。例如,您可从程序输入获取数据库的名称,将 DATABASE 语句构建为程序变量,然后使用 EXECUTE IMMEDIATE 来执行该语句,以打开指定的数据库。

在 ESQL/C 例程内,由变量或引用的字符串指定的语句文本可包括多个 SQL 语句,如果用分号(;)分隔符来分隔连续的语句的话。然而, 在 SPL 例程中,仅可包括一个语句。statement 不可为 SPL 语句,但可为在 EXECUTE IMMEDIATE 和限制性语句对有效语句的限制 章节中未列出的任何 SQL 语句。

如果跟在 IMMEDIATE 关键字后的参数有效,则被分析并执行;然后立即释放所有数据结构和内存资源。除非您使用 EXECUTE IMMEDIATE,不然这些操作需要单独的 PREPARE、EXECUTE 和 FREE 语句。

如果会话环境值(诸如发出 EXECUTE IMMEDIATE 语句的 ESQL/C 或 SPL 例程的 EXTDIRECTIVES、OPTCOMPIND 或 USELASTCOMMITTED 设置)与相应的 ONCONFIG 参数值不同,则会话环境值覆盖它们。

在支持隐式事务的符合 ANSI/ISO 的数据库中,在缺省情况下,EXECUTE IMMEDIATE 语句不开启新的事务。然而,执行指定的 SQL 语句文本可开启新的事务。

1 仅限于 ESQL/C
2 仅限于 SPL