- 批处理
概念:
批处理是一组Transact-SQL语句,其中可以包括变量和流程控制语句,由客户端应用程序一次性地发送到数据库服务器,SQL server的数据库服务器将批处理语句编译成一个可执行的单元,此单元称为执行计划,执行计划中的语句被逐条执行。
- 变量的声明和使用
1.局部变量的声明
DECLARE @<变量名> <数据类型> [,···n]
例:
DECLARE @Num INTEGER,@Title Char(10)
局部变量的生存期从声明它的地方开始,直到声明它的批处理、存储过程或函数结束
2.局部变量的赋值与引用
SET @<变量名>=<表达式>
DECLARE @MaxGrade INT
SET @MaxGrade=(SELECT MAX(Grade)*0.9 FROM Student_Elective WHERE StdId='09001')
表达式中可以包含查询语句,但查询语句必须是单列单值或单列空值
或
SELECT @<变量名>=<表达式>
DECLARE @MaxGrade INT
该格式的特点是允许查询结果为单列多行,赋给变量的为最后一行的值
SELECT @MaxGrade=Max(Grade)*0.9 FROM Student_Elective WHERE StdId='09001'
3.在查询分析器中输出变量的值
PRINT 表达式
declare @MaxGrade INT
select @MaxGrade=MAX(Grade)*0.9
from Student_Elevtive
where StdId='09001'
print @MaxGrade
4.全局变量
@@VERSION:返回SQL server安装的日期、版本和处理器类型
@@DBTS:返回当前TIMESTAMP数据类型的值
@@ERROR:返回最后执行的Transact-SQL语句的错误代码
等
5.流程控制语句
(1)分支语句-IF
IF <条件表达式>
BEGIN
<语句>[···n]
END
[ELSE
BEGIN
<语句>[···n]
END]
例:
declare @BoyAvgGrade INTEGER
declare @GirlAvgGrade integer
select @BoyAvgGrade=AVG(Grade)
from Student a,Student_Elevtive b
where a.StdId=b.StdId and a.StdSex=1
select @GirlAvgGrade=AVG(Grade)
from Student a,Student_Elevtive b
where a.StdId=b.StdId and a.StdSex=0
if @BoyAvgGrade>@GirlAvgGrade
print '男同学平均成绩高于女同学'
else
if @BoyAvgGrade=@GirlAvgGrade
print '男同学平均成绩等于女同学'
else
print '女同学平均成绩高于男同学'
(2)循环语句
WHILE <条件表达式>
BEGIN
语句 [···n]
[BREAK]
[CONTINUE]
语句 [···n]
END
declare @Id int,@lev int
set @Id=8
set @lev=0
set @Id=(select pid from Code where id=@Id)
while @Id!=0
begin
set @Id=(select pid from Code where id=@Id)
set @lev=@lev+1
end
print @lev
(3)RETURN语句
RETURN [expression]
结束程序,RETURN以后的程序将不被执行