DYF
我思故我在!

变量


局部变量是可以保存单个特定类型数据值的对象,变量的作用域从声明变量的地方开始到声明变量的批处理或存储过程的结尾。

局部变量使用DECLARE语句定义,并且指定变量的数据类型,然后可以使用SET或SELECT语句为变量初始化;局部变量必须以“@”开头,而且必须先声明后使用。

声明格式:

DECLARE @变量名 变量类型[,@变量名 变量类型…]

(1)变量名必须以 at 符 (@) 开头

(2)变量类型可以是任何系统提供的公共语言运行时 (CLR) 用户定义类型或别名数据类型。变量不能是 textntextimage 数据类型。

(3)要声明多个局部变量,请在定义的第一个局部变量后使用一个逗号,然后指定下一个局部变量名称和数据类型。

如: DECLARE @LastName nvarchar(30), @FirstName nvarchar(20), @StateProvince nchar(2);

(4)声明变量时,其值设置为 NULL。

(5)在批处理中可声明的局部变量的最大值是 10,000。

(6)Tansact-SQL 系统函数的名称以两个 at 符号 (@@) 打头。早期版本中,@@functions 被称为全局变量,但它们不是变量,也不具备变量的行为。@@functions 是系统函数,它们的语法遵循函数的规则。

初始化:

局部变量不能使用“变量=变量值”的格式进行初始化,必须使用SELECT或SET语句来设置其初始值(SET 语句是为变量赋值的首选方法)。

初始化格式:

SELECT @局部变量=变量值

SET @局部变量=变量值

如果在单个 SELECT 语句中有多个赋值子句,则 SQL Server 不保证表达式求值的顺序,只有当赋值之间有引用时才能看到影响。

如果 SELECT 语句返回多行而且变量引用一个非标量表达式,则变量被设置为结果集最后一行中表达式的返回值。

例如,在此批处理中将 @EmpIDVariable 设置为返回的最后一行的 EmployeeID 值,此值为 1:

USE AdventureWorks;
GO
DECLARE @EmpIDVariable int;

SELECT @EmpIDVariable = EmployeeID
FROM HumanResources.Employee
ORDER BY EmployeeID DESC;

SELECT @EmpIDVariable;
GO
posted on 2009-11-17 16:31  o(∩_∩)o...  阅读(7073)  评论(0编辑  收藏  举报