黑马程序员 Tansact——sql变量

来源:互联网 发布:手机淘宝安卓版 编辑:程序博客网 时间:2024/05/21 14:48
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------



Transact-SQL 局部变量是可以保存单个特定类型数据值的对象。批处理和脚本中的变量通常用于: 


作为计数器计算循环执行的次数或控制循环执行的次数。




保存数据值以供控制流语句测试。




保存存储过程返回代码要返回的数据值或函数返回值。




声明 Transact-SQL 变量
DECLARE 语句通过以下操作初始化 Transact-SQL 变量: 


指定名称。名称的第一个字符必须为一个 @。




指定系统提供的或用户定义的数据类型和长度。对于数值变量还指定精度和小数位数。对于 XML 类型的变量,可以指定一个可选的架构集合。




将值设置为 NULL。


例如,下面的 DECLARE 语句使用 int 数据类型创建名为 @mycounter 的局部变量。
 
DECLARE @MyCounter int;
 
若要声明多个局部变量,请在定义的第一个局部变量后使用一个逗号,然后指定下一个局部变量名称和数据类型。


例如,此 DECLARE 语句创建了三个名为 @LastName、@FirstName 和 @StateProvince 的局部变量,并将每个变量都初始化为 NULL:


DECLARE @LastName nvarchar(30), @FirstName nvarchar(20), @StateProvince nchar(2);
 
变量的作用域就是可以引用该变量的 Transact-SQL 语句的范围。变量的作用域从声明变量的地方开始到声明变量的批处理或存储过程的结尾。例如,下面的脚本存在语法错误,因为在一个批处理中引用了在另一个批处理中声明的变量:


USE AdventureWorks;
GO
DECLARE @MyVariable int;
SET @MyVariable = 1;
-- Terminate the batch by using the GO keyword.
GO 
-- @MyVariable has gone out of scope and no longer exists.


-- This SELECT statement generates a syntax error because it is
-- no longer legal to reference @MyVariable.
SELECT EmployeeID, NationalIDNumber, Title
FROM HumanResources.Employee
WHERE EmployeeID = @MyVariable;


变量具有局部作用域,只在定义它们的批处理或过程中可见。在下面的示例中,为执行 sp_executesql 创建的嵌套作用域不能访问在更高作用域中声明的变量,从而返回错误。


DECLARE @MyVariable int;
SET @MyVariable = 1;
EXECUTE sp_executesql N'SELECT @MyVariable'; -- this produces an error
 


 

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net
原创粉丝点击