学习目标:
知识目标:
了解Transact-SQL语言编程基本方法
知道常用系统函数
知道常见流控语句
能力目标:
会使用Transact-SQL语言编写程序
会使用流控语句
会创建自定义函数
任务8.1 声明和使用变量
SQL Server中变量分为全局变量和局部变量两种类型。
全局变量是由系统定义 。
常用全局变量有:@@SERVERNAME:返回SQL Server本地服务器的名称。@@ROWCOUNT:返回受上一条语句影响的行数。@@ERROR:返回最后执行的Transact-SQL语句的错误代码。
例: SELECT @@SERVERNAME AS 'SQL Server本地服务器的名称'
例:SELECT * FROM 教务数据库.DBO.学生表
SELECT @@ROWCOUNT AS '受上一条语句影响的行数:'
例:SELECT * FROMM 教务数据库.DBO.学生表
SELECT @@ERROR AS ‘返回最后执行的Transact-SQL语句的错误代码:’ 返回最后执行的Transact-SQL语句的错误代码: 102
局部变量是用户在程序中自己定义的变量,一次只能保存一个值,它只在定义的程序范围内有效,用于临时存放数据。局部变量以一个@开头,最长为128个字符。
声明局部变量的语法格式如下:
【例】用赋值语句分别定义两个整型变量x和y。使x的值为20,y的值为5,计算并显示x,y,3x +4y,xy,和x /y的值。
vT-SQL语句为:
DECLARE @X INT,@Y INT
SET @X=2
0SET @Y=5
SELECT @x,@y,3*@x +4*@y,@x*@y,@x/@y
SELECT赋值语句:
用SELECT命令可以一次给多个变量赋值。
当表达式为表的列名时,可使用子查询功能从表中一次返回多个值,
例2:
声明一个变长字符型变量@var1,用SELECT赋值语句
USE [教务数据库]
DECLARE @var1 varchar(8)
--声明变长字符型局部变量
SELECT @var1=姓名 FROM 教师表
WHERE 教师号='103011' --将子查询的结果赋值给局部变量
SELECT @var1 AS '教师姓名' --显示局部变量结果
例2:
声明一个变长字符型变量@var1,用SELECT赋值语句
SELECT @var1 AS '读者姓名' --显示局部变量结果
SET赋值语句:
SET赋值语句只能给一个变量赋值。
子查询必须是括号括起来的完整SELECT查询语句。
例4:用SET赋值语句为局部变量@no赋值,
代码:
例:用SET赋值语句将学生表“Student”统计查询出的学生总数
代码:
赋值语句比较
(2)SELECT 表达式 [,...n]
例:DECLARE @X INT,@Y INT
SET @X=20
SET @Y=5
SELECT @x AS '@x',@y AS '@y',3*@x +4*@y,@x*@y,@x /@y AS '@x /@y‘
例:
DECLARE @X INT,@Y INT
SET @X=20
SET @Y=5
PRINT @x+@y
PRINT @x*@y
PRINT 'X+y='+STR(@x+@y,3)
PRINT 'X*y='+STR(@x*@y,8)
例:函数Datepart(yy,‘2004-3-13’) ,yy 取日期的年份,mm取日期的月份,dd取日期的日
PRINT Datepart(yy,‘2004-3-13’)+2 输出结果:2006
PRINT Datepart(mm,‘2004-3-13’)+2 输出结果:5
PRINT Datepart(dd,‘2004-3-13’)+2 输出结果:15
全局变量是SQL Server系统提供并赋值的变量。
通常可以将全局变量的值赋给局部变量,
全局变量以@@开头,
例:显示SQL Server的版本。
代码:SELECT @@version
执行结果(略),可上机试试,。
3.注释语句:
注释语句是系统不执行的语句,对程序进行注释可以帮助读者理解程序员的意图,使程序代码易于维护,也可以标识出开发者出于某些原因不想执行的部分。
(1)单行注释 单行注释语句使用两个连字符“--”开头,其后可以是任何可输入的字符。
【例 9】查找学生名册表中的“王”姓学生的信息。
(1)单行注释
单行注释语句使用两个连字符“--”开头,其后可以是任何可输入的字符。
【例 9】查找学生名册表中的“王”姓学生的信息。
SELECT * FROM 学生名册 WHERE 姓名 LIKE ’王%’
--查询所有王姓学生信息
(2)多行注释
多行注释语句可以注释跨越多行的代码,用分隔符“/*”开头,用分隔符“ */”结尾,在其中的全部内容均视为注释。
4.等待语句
等待语句可以暂停程序执行,直到设定的等待时间已到,或设定的事件发生才继续往下执行。其一般语法格式如下。
WAITFOR { DELAY ’时间’ | TIME ’时间’ | ERROREXIT | PROCESSEXIT | MIRROREXIT }
各参数、关键字说明如下。
(1)DELAY:用来设定等待的时间,最多可达24小时。时间必须为DATETIME类型的数据,如“57:12:28”,不能包括日期数据。
(2)TIME:用来设定等待的结束时间。
(3)ERROREXIT:等待处理非正常中断。
(4)PROCESSEXIT:等待处理正常或非正常中断。
(5)MIRROREXIT:等待处理镜像设备失败。
【例 】设定0分10秒后执行SELECT语句查询[学生管理]数据库的[学生名册]表。
USE 学生管理
GO
WAITFOR DELAY '00:00:10'
SELECT * FROM 学生名册
5.跳转语句
跳转语句可以改变程序执行的流程,使程序跳转到有标号的语句行继续往下执行,语法格式如下。
GOTO 标号
说明:GOTO语句中的标号后不能有“:”,作为跳转目标的标号可以是数字或数字与字符的组合,但是必须以“:”结尾,例如“5:”或“AB1:”
【例 】分行输出偶数数字。
DECLARE @number int
SELECT @number = 0
NUM: PRINT @number
SELECT @number =@number + 2
WHILE @number < 10 GOTO NUM
GO
6. 返回语句
返回语句用于结束当前程序的执行,返回到调用它的程序调用之处,语法格式如下。
RETURN ([整型表达式])
7. 脚本
脚本是存储在文件中的一系列SQL语句,即一系列按顺序提交的批处理。SQL脚本中可以包含一个或多个批处理。脚本文件的扩展名为.sql,使用脚本文件可以建立起可重复使用的模块化代码文件。还可以在不同计算机之间传送SQL语句,脚本可以在查询分析器中执行,也可以在ISQL或OSQL实用程序中执行。脚本文件也可以用记事本查看。