标签:
首先先了解变量是什么?
变量是一块内存空间的表示
局部变量:
第一套变量定义 整型
Declare @num int
Set @num=10
第二套变量定义 字符串类型(char varchar nvarchar)
Declare @name nvarchar(32)
Set @name=’小贱贱’
第3套变量定义 小数类型(float decimal numberic(18,0))
Declare @number float
Set @number =1.3
第4套变量定义 日期类型(datetime))
Declare @mydate datetime
Set @mydate=getDate()
区别1:set不支持一次性给多个变量赋值,但select支持
区别2:如果给一个变量赋多个值,set报错,select返回最后一个
区别3:如果结果集为空值,set方式返回null,而select返回原值
全局变量:
切记:程序员不能自己定义全局变量,只能从全局变量中取值。
@@ERROR 返回最后一个T-SQL错误的错误号
@@IDENTITY 返回最后一次插入的标识值
@@ROWCOUNT 返回受上一个SQL语句影响的行数
@@SERVERNAME 返回本地服务器的名称
@@VERSION 返回SQL Server的版本信息
输出语句
print 局部变量或字符串
select 局部变量 as 自定义列名
逻辑控制语句:
顺序控制结构语句:BECGIN-END
分支结构控制语句:IF-ELSE语句和CASE-END语句
循环结构控制语句:WHERE语句
IF-ELSE语句示例:
declare @avg int
select @avg= AVG(studentresult) from Result,Subject
where Result.SubjectId=Subject.SubjectId
and ExamDate>=‘2013-08-09‘
and ExamDate<‘2013-08-10‘
and Subject.SubjectName=‘oop‘
--02.判定:>=70 显示优秀,同时显示分数最高的三个人的分数
if(@avg>=70)
begin
print ‘优秀‘
--显示前名成绩 当天 oop
select top 3 * from Result,Subject
where result.SubjectId=Subject.SubjectId
and ExamDate>=‘2013-08-09‘
and ExamDate <‘2013-08-10‘
and SubjectName=‘oop‘
--降序排列desc
order by StudentResult desc
end
else
begin
print ‘较差‘
--显示前名成绩 当天 oop
select top 3 * from Result,Subject
where result.SubjectId=Subject.SubjectId
and ExamDate>=‘2013-08-09‘
and ExamDate <‘2013-08-10‘
and SubjectName=‘oop‘
--降序排列desc
order by StudentResult asc
end
CASE-END语句示例:
declare @SubId int
select @SubId=Subjectid from Subject
where SubjectName=‘oop‘
--获取最近日期
declare @maxdate datetime
select @maxdate=MAX(examdate) from Result
where SubjectId=@SubId
select StudentNo, 成绩=
case
when studentresult>=90 then ‘A‘
when studentresult>=80 then ‘B‘
when studentresult>=70 then ‘C‘
when studentresult>=60 then ‘D‘
else ‘E‘
end
from Result,Subject
where Subject.SubjectId=@SubId and ExamDate=@maxdate
标签:
原文地址:http://www.cnblogs.com/szj-ang/p/5256186.html