动态 SQL

虽然静态 SQL 是有用的,但在您编写程序的时候,它要求您知道每个 SQL 语句确切内容。例如,您必须确切说明在任何 WHERE 子句中测试哪些列,以及在任何选择列表中重命名哪些列。

当您编写程序来执行定义良好的任务时,不存在任何问题。但不可事先完善地定义某些程序的数据库任务。特别地,必须响应交互用户的程序可能需要根据用户输入的内容来组合 SQL 语句。

动态 SQL 允许程序在执行期间形成 SQL 语句,因此,用户输入决定该语句的内容。以下列步骤执行此活动:
  1. 程序将 SQL 语句的文本组装为一个字符串,将该字符串存储在程序变量中。
  2. 它执行 PREPARE 语句,请求数据库服务器测试该语句文本并为执行来准备它。
  3. 它使用 EXECUTE 语句来执行该准备好的语句。

这样,基于任何种类的用户输入,程序可构造并然后使用任何 SQL 语句。例如,它可读取一个 SQL 语句的文件并准备和执行每一语句。

DB-Access 是一个您可用来交互地探索 SQL 的实用程序,它是一个动态地构造、准备和执行 SQL 语句的 GBase 8s ESQL/C 程序。例如,DB-Access 允许您使用简单的、交互式的菜单来指定表的行。当您完成时,DB-Access 动态地构建必需的 CREATE TABLE 或 ALTER TABLE 语句并准备和执行它。