分享

7-3-3

 昵称233866 2009-11-07


7.3.2 变量

1.T-SQL变量的两种类型
局部变量和全局变量

2.变量定义
(1)局部变量由用户定义和维护,名称以单个@字符开头;全局变量由系统定义和维护,以两个@字符开头,用户不能定义全局变量。
(2)声明变量时使用declare命令,并且要指定声明的变量名及其数据类型。
(3)可以使用的数据类型包括create table命令中的所有数据类型,以及table和SQLvariant数据类型。在单个declare命令中声明多个变量时,需要使用都好将它们互相隔开。

3.declare命令的格式
(1)declare @local_variable data_type [, @local_variable data_type…]
(2)例如:declare @var1 int , @var2 varchar(20)

4.变量的作用域
局部变量的作用域(即可以使用变量的应用程序和变量的声明周期)只能是当前的批处理。

5.变量赋值
(1)新声明的变量的默认值为空值,在表达式中使用它们之前必须为它们赋初值。
(2)为变量赋值可以使用set命令和select命令。
(3)它们之间的主要区别在于:select可以从表、子查询或者视图中检索数据,并且也可以包含其它的select子句;而set命令则只能从表达式中获取数据。在set和select命令中都可以使用函数。
(4)当然,select语句可以检索多列,而每列中的数据都可以赋值给一个变量。如果select语句返回了多行,那么将会把结果集中最后一行的数据赋值给变量,系统不会报告任何的错误。
(5)实例
   ①目的
  说明变量的作用域以及set和select命令的用法。
   ②语句
use pubs
declare @var1 int, @var2 varchar(50)
select @var1, @var2
set @var1 = 123
select @var2 = job_desc from jobs
select @var1, @var2
go
select @var1, @var2

   ③返回结果
--------------------------------
NULL NULL
--------------------------------
123 Designer
--------------------------------
  服务器: 消息 137,级别 15,状态 2,行 1
  必须声明变量 '@var1'。
   ④说明
  第一行返回结果说明变量的默认值都是空值NULL。set命令的格式为set @local_variable = expression,select命令的格式为select @local_variable = expression。在本例中select语句选出的结果不止一行,而@var2的值为结果集中最后一行对应的值。由于变量的作用域只是当前的批处理,所以在go后面的批处理发生错误,找不到变量@var1的定义。
(6)在T-SQL中使用变量
   ①T-SQL中可以直接在SQL查询中使用变量,而无需通过创建复杂的动态SQL字符串将变量串联到代码中。
   ②例如:
use pubs
declare @varstate varchar(10)
set @varstate = 'KS'
select * from authors where state = @varstate
go

   ③执行结果如下:
  341-22-1782 Smith Meander 913 843-0462 10 Mississippi Dr. Lawrence KS 66044 0

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多