变量
信息打印
--print:直接打印消息
--select:在表格中打印消息,可以设置多列。以及每一列名字
变量
T-SQL中变量分为局部变量和全局变量
局部变量:(1)以@作为前缀(2)先声明,在赋值
declare @str varchar(20) set @str ='我爱数据库' --或者select @str = '我爱数据库编程' print @str
备注:set赋值和select赋值区别:
set:赋值变量指定的值
select::一般用于从表中查询出的数据,查询记录有多条,将最后一条记录的值赋给变量,例如:
select @变量名 = 字段名 from 表名
在赋值过程中,如果是表中查询的数据,如果记录只有一条,使用set和select都可以,但是习惯上使用select
全局变量:(1)以@@作为前缀(2)由系统进行定义维护,只读
--@@ERROR: 返回执行的上一行语句的错误号
--@@IDENTITY: 返回最后插入的标识符
--@@MAX_CONNECTIONS:返回允许同时进行的最大用户连接数
--@@ROWCOUNT:返回受上一语句影响的行数
--@@SERVERNAME:返回运行SQL Server的本地服务器的名称
--@@SERVICENAME:返回SQL Server正在其下运行的注册表项的名称
--@@TRANCOUNT:返回当前连接的活动事物数
--@@LOCK_TIMEOUT:返回当前会话的当前锁定超时设置(毫秒)
变量示例
(1)为赵云此人进行开户开卡操作,赵云身份证:420107199904054233
declare @AccountId int insert into AccountInfo(AccountCode,AccountPhone,RealName,OpenTime) values('420107199904054233','18210007777',N'赵云',GETDATE()) set @AccountId=@@identity insert into BankCard(CardNo,AccountId,CardPwd,CardMoney,CardState) values('420107199904054233',@AccountId,'123456',0,1)
(2)需要求出张飞的银行卡卡号和余额,张飞身份证:420107199904054234
方案一:连接查询
select CardNo 卡号,CardMoney 余额 from BankCard left join AccountInfo on BankCard.AccountId = AccountInfo.AccountId where AccountCode='420107199904054234'
方案二:使用变量
declare @AccountId int select @AccountId = (select AccountId from AccountInfo where AccountCode ='420107199904054234') select CardNo 卡号,CardMoney 余额 from BankCard where BankCard.AccountId = @AccountId
三、go语句
go语句:
(1)等待go语句前的代码执行完成后,再执行go后面的代码。
create database DBTEST1 go use DBTEST1 create table AccountInfo --账号信息表 ( AccountId int primary key identity(1,1), --账号编号 AccountCode varchar(20) not null, --身份证号码 AccountPhone varchar(20) not null, --电话号码 RealName varchar(20) not null, --真实姓名 OpenTiem smalldatetime not null, --开户时间 )
(2)批处理语句的结束标志。
--下面的@num变量作用域为全局
--declare @num int
--set @num = 0
--set @num = 100
--下面的@num变量的作用域是局部,只在两个go之间可以使用,最后一行代码会报错
--go
--declare @num int
--set @num = 100
--go
set @num = 200

浙公网安备 33010602011771号