本地变量有其引用作用域,在该作用域中声明例程。如果省略 GLOBAL 关键字,则在 DEFINE 语句中声明的任何变量都是本地变量,并且在其它 SPL 例程中不可见。
出于此原因,声明相同名称的本地变量的不同 SPL 例程可在同一 DB-Access 或 SQL 管理 API 会话中运行而无冲突。
如果本地变量和全局变量具有相同的名称,那么全局变量在声明了本地变量的 SPL 例程中不可见。(在所有其它 SPL 例程中,只有全局变量在作用域中。)
元素 | 描述 | 限制 | 语法 |
---|---|---|---|
column | 列名 | 必须已经存在于 table 或 view 中 | 标识符; |
data_type | SPL_var 的类型 | 不能是 BIGSERIAL 、BYTE 、SERIAL 、SERIAL8 或 TEXT | 数据类型 |
distinct_type | Distinct 类型 | 必须已经在数据库中定义 | 标识符 |
opaque_type | Opaque 类型 | 必须已经在数据库中定义 | 标识符 |
SPL_var | 新的 SPL 变量 | 在语句块中必须是唯一的 | 标识符; |
synonym, table, view | 表、视图或同义词的名称 | 当发出此语句时它所指向的同义词和表或视图必须存在 | 数据库对象名 |
CREATE PROCEDURE def_ex() DEFINE i INT; DEFINE word CHAR(15); DEFINE b_day DATE; DEFINE c_name LIKE customer.fname; DEFINE b_text REFERENCES TEXT; END PROCEDURE