变量

变量:指的是在程序过程中值可以发生变化的量,可以存贮数据值的对象,能够向SQL语句传递数据

变量的分类:

全局变量:系统定义和维护,可以直接使用以@@开头

局部变量:由操作者定义,以@开头,使用关键字declare声明

    特点:先声明再赋值

    作用域:只在定义它的批处理或过程中可见

局部变量的作用:在上下语句中传递数据

语法:

declare @变量名 数据类型

变量赋值:

关键字:set——赋给变量常亮值

关键字:select——从表中查询数据,然后再赋值给变量

使用set与select语句赋值的区别

1、set不支持对多个变量赋值,select可以

2、表达式返回多个值时set出错,select将返回最后一个值赋给变量

3,表达式未返回值时set赋null,select保持原值不变

 

例子

use E_Market
go
--变量的声明
declare @UserId varchar(10), @pwd varchar(10)
--给变量赋值,两种赋值方式
--set
set @UserId='bobo'
--select
select @pwd=UserPwd from UserInfo where UserId=@UserId

print @UserId
print @pwd
/*go
--不能使用的原因是,我们的@UserId声明在批处理里,那么批处理结束变量就不能使用了
select * from UserInfo where UserId=@UserId
*/
go
--使用set和select为变量赋值的区别
--【1】同时为多个变量进行赋值
declare @name varchar(10), @province varchar(10)
--使用set为两个变量同时赋值 --出错
--set @name='张三' ,@province='吉林'

--使用select为多个变量赋值 --允许
select @name='张三', @province='吉林'
print @name+ ' ' + @province
go
--【2】表达式返回多个值的时候两者的区别
declare @province varchar(20)
--使用set赋值语法没错,执行出错
--set @province=( select UserAddress from UserInfo)
--使用select赋值,将表达式中的最后一个值赋给变量
select @province= UserAddress from UserInfo
print @province
select UserAddress from UserInfo
go
--【3】表达式无返回值的时候
--set对表达式无返回值的时将空值赋给变量
declare @name varchar(20)
set @name='张三'
--set @name =(select UserName from UserInfo where UserId='yaya')
--select @name

--select对表达式无返回值的时候,变量保持原值不变
select @name=UserName from UserInfo where UserId='yaya'
select @name

posted @ 2019-05-15 08:57  我是神奇的小白  阅读(196)  评论(0编辑  收藏  举报