Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 语言元素 » 变量

 

局部变量

SQL Anywhere 支持局部变量。局部变量是使用 DECLARE 语句声明的,它们只能用在复合语句(即用关键字 BEGIN 和 END 括起来的语句)内。在 SQL Anywhere 中,每个 DECLARE 语句只能声明一个变量。

如果在复合语句内执行 DECLARE 语句,作用域仅限于该复合语句。

这类变量最初被设置为 NULL。变量值可以用 SET 语句进行设置,或用带有 INTO 子句的 SELECT 语句指派。

DECLARE 语句的语法如下:

DECLARE variable-name data-type

局部变量可作为参数传递给过程,只要该过程是从复合语句内调用的。

示例

下面的批处理语句说明了如何使用局部变量。

BEGIN
   DECLARE local_var INT;
   SET local_var = 10;
   MESSAGE 'local_var = ', local_var TO CLIENT;
END

从 Interactive SQL 运行此批处理语句时,Interactive SQL 的 [消息] 选项卡中会出现 local_var = 10 消息。

变量 local_var 在声明此变量的复合语句外部不存在。下面的批处理语句无效,会出现 column not found 错误。

-- This batch is invalid.
BEGIN
   DECLARE local_var INT;
   SET local_var = 10;
END;
MESSAGE 'local_var = ', local_var TO CLIENT;

下例说明了如何用带有 INTO 子句的 SELECT 语句设置局部变量的值:

BEGIN
   DECLARE local_var INT;
   SELECT 10 INTO local_var;
   MESSAGE 'local_var = ', local_var TO CLIENT;
END

从 Interactive SQL 运行此批处理语句时,数据库服务器的消息窗口中会出现 local_var = 10 消息。

有关批处理和局部变量作用域的详细信息,请参见Transact-SQL 过程中的变量