与列名冲突的变量

如果对 SPL 变量和列名称使用相同的标识符,则在变量引用范围内,数据库服务器将未限定标识符的任何实例解释为变量。要使用标识符指定列名称,请使用 table.column 表示法将列名称与表名称进行限定。在以下示例中,过程变量 lname 与列名称相同。在以下 SELECT 语句中,customer.lname 是数据库中的一个列,lname 是一个 SPL 变量:

CREATE PROCEDURE table_test()
      DEFINE lname CHAR(15);
      LET lname = "Miller";
      SELECT customer.lname FROM customer INTO lname
      WHERE customer_num = 502;

此示例有效,但依赖 GBase 8s 的优先级规则来解决 SPL 变量和列名称之间的名称冲突可能会使您的代码难以解读和维护。重复使用与变量和列名称相同的标识符的替代方法是,DEFINE 语句声明标识符的一些前缀,例如本示例中的 v_lname,以指示此变量存储列 lname 的值。