SQL 编程 / 程序中的 SQL |
应用程序可在 SQL 语句内使用程序变量。在 SPL 中,当语法允许时,您可在 SQL 语句中放置程序变量。例如,DELETE 语句可在它的 WHERE 子句中使用程序变量。
CREATE PROCEDURE delete_item (drop_number INT) ⋮ DELETE FROM items WHERE order_num = drop_number ⋮
在使用嵌入式 SQL 语句的应用程序中,SQL 语句可引用程序变量的内容。在嵌入式 SQL 语句中命名的程序变量称为主变量,因为在程序中将该 SQL 语句认作是客人。
EXEC SQL delete FROM items WHERE order_num = :onum;
在此程序中,您看到常规的 DELETE 语句,如同 修改数据 描述的那样。当执行该 GBase 8s ESQL/C 程序时,删除 items 表的一行;还可删除多行。
该语句包含一个新的特性。它将 order_num 列与编写为 :onum 的一项相比较,这是主变量的名称。
SQL API 产品提供一种分隔主变量的名称的方式,当它们出现在 SQL 语句的上下文中时。在 GBase 8s ESQL/C 中,可使用美元符号($)或冒号(:)来引入主变量。冒号是符合 ANSI 的格式。示例语句请求数据库服务器删除其中的订单编号等于名为 :onum 的主变量的当前内容的那些行。在程序中声明了此数值变量并提前分配了值。
在 GBase 8s ESQL/C 中,可使用前导的美元符号($)或关键字 EXEC SQL 来引入 SQL 语句。
如果您有编程经验,则您可立即看到这些可能性。在该示例中,将要删除的订单号码传到变量 onum 中。那个值来自程序可使用的任何源。可从文件读取它,程序可提示用户输入它,或可从数据库读取它。DELETE 语句本身可为子例程的一部分(在此情况下,onum 可为该子例程的参数);可一次或反复地调用该子例程。
总之,当您在程序中嵌入 SQL 语句时,您可对它们应用主语言的所有功能。您可将 SQL 语句隐藏在许多接口之下,且可以多种方式优化 SQL 函数。