第三章 T-SQL 编程
3.1 使用变量 变量是可以存储数据值的对象。可以使用局部变量向SQL语句传递数据。在T-SQL中执行一批SQL语句时,可以声明许多变量以便临时使用。声明变量以后,可以在批处理中用一条T-SQL语句设置该变量的值。该批处理中的下一条语句可以从该变量中检索数值,
3.1 使用变量
变量是可以存储数据值的对象。可以使用局部变量向SQL语句传递数据。在T-SQL中执行一批SQL语句时,可以声明许多变量以便临时使用。声明变量以后,可以在批处理中用一条T-SQL语句设置该变量的值。该批处理中的下一条语句可以从该变量中检索数值,并给出结果。
T-SQL中的变量分为局部变量和全局变量。局部变量的使用也是先声明,再赋值。而全局变量右系统定义和维护,我们可以直接使用,但一般不自定义全局变量。
3.1.1 局部变量
局部变量的名称必须以标记@作为前缀。
声明局部变量的语句如下:
Declare @variable_name DataType
其中, variable_name 为局部变量的名称,DataType为数据类型。
例如:
Declare @name varchar(8) --- 声明一个存放学员姓名的变量name,最多可以存储8个字符
Declare @seat int --- 声明一个存放学员座位号的变量seat
局部变量的赋值有两种方法:使用SET 语句或 Select 语句。
语法:
Set @variable_name = value
或
Select @variable_name = value
假定使用insert语句,已向表stuInfo中插入了如下几条测试数据。
stuName stuNo stuSex stuAge stuSeat stuAddress
张秋丽 s25301 男 18 1 北京海淀
李文才 s25302 男 31 3 地址不详
李斯问 s25303 女 22 2 河南洛阳
欧阳俊雄 s25304 男 28 4 新疆
示例1
/*-- 查找'李文才'的信息 --*/
Declare @name varchar(8) ---学员姓名
set @name = '李文才' ---使用set赋值
select * from stuInfo where stuName = @name
/*-- 查找'李文才'的左右同桌 --*/
Declare @seat int --- 座位号
Select @seat = stuSeat from stuInfo where stuName = @name --- 使用Select赋值
Select * from stuInfo where (stuSeat = @seat + 1) or (stuSeat = @seat - 1)
从示例1可以看出,局部变量可用于在上下语句中传递数据(如本例的座位号@seat)。
set 赋值语句一般用于赋给变量指定的数据常量,如本例“李文才”。
Select 赋值语句一般用于从表中查询数据,然后再赋给变量。需要注意的是,Select 语句需要确保筛选的记录不多于一条。如果查询的记录多于一条,将把最后一条记录的值赋给变量。
3.1.2 全局变量
SQL Server 中的所有全局变量都使用两个@标志作为前缀。
常用的全局变量见下图。
变量 含义
@@ERROR 最后一个T-SQL错误的错误号
@@IDENTITY 最后一次插入的标识值
@@LANGUAGE 当前使用的语言的名称
@@MAX_CONNECTIONS 可以创建的同时连接的最大数目
@@ROWCOUNT 受上一个SQL语句影响的行数
@@SERVERNAME 本地服务器的名称
@@SERVICENAME 该计算机上的SQL服务的名称
@@TIMETICKS 当前计算机上每刻度的微妙数
@@TRANSCOUNT 当前连接打开的事务数
@@VERSION SQL SERVER的版本信息
3.2 输出语句
T-SQL中支持的输出语句,用于输出显示处理的数据结果。
常用的输出语句用两种,它们的语法分别如下。
pint 局部变量或字符串
select 局部变量 AS 自定义列名
其中,第二种方法就是查询语句的特殊应用。
示例2
pint '服务器的名称:' + @@SERVERNAME
select @@SERVERNAME AS '服务器名称'
用print 语句输出的结果将在消息窗口中以文本方式显示,用Select 语句输出的结果将在结果窗口中以表格方式显示。
由于使用print语句要求以单个局部变量或字符串表达式作为参数,所以如果我们这样编写SQL语句将会出错。
print '当前错误号' + @@ERROR
因为全局变量@@ERROR返回的是整型数值。那么如何解决呢?(转换函数,把数值转换成字符串)
print '当前错误号' + convert(varchar(5) , @@ERROR)
理解了输出语句后,我们再看看有关全局变量的示例。
示例3
insert into stuInfo( stuName, stuNo, stuSex, stuAge) values ('梅超风', 's25318', '女', '23')
print '当前错误号' + convert(varchar(5), @ERROR) ---如果大于0,表示上一条语句执行有错误
print '刚才报名的学员,座位号为:' + convert(varchar(5), @@IDENTITY)
Update stuInfo set stuAge = 85 where stuName = '李文才'
print '当前错误号:' + convert(varchar(5), @@ERROR)
print 'SQL Server 的版本' + @@VERSION
GO
@@ERROR 用于表示最近一条SQL语句是否有错误,香港虚拟主机,如果有错误,将返回非零的值。第一次“insert”语句没错,所以为0。第二次“Update”语句违反年龄15~40的检查约束,所以错误号不为零。
@@IDENTITY可用来查询最后插入的标识值(自动编号值)。例如,本例stuInfo表的stuSeat(座位号)字段,我们前面已定义为标识列(自动标号列),香港空间,该列的值将自动生成,所以在插入时不用跳鞋座位号的数据。一旦插入数据后,我们可以通过查询@@IDENTITY全局变量,来查看目前的自动编号值,即“梅超风”的座位号。
3.3 逻辑控制语句
3.3.1 IF-ELSE 条件语句
语法
IF (条件)
语句或语句块
ELSE
语句或语句块
同java语言一样,ELSE为可选。
如果有多条语句,需要使用语句块,语句块使用BEGIN···END表示,其作用类似java语言的“{}”符合。
IF(条件)
BEGIN
语句1
语句2
···
END
ELSE
···
假定我们已向学员成绩表stuMarks中添加以下测试数据。
ExamNo stuNo writtenExam LabExam
s271811 s25303 80 58
s271813 s25302 50 90
s271815 s25302 65 0
s271816 s25301 77 82
示例4
DECLARE @myavg float
Select @myavg = AVG(writtenExam) FROM stuMarks
print '本班平均分' + convert(varchar(5), @myavg)
IF(@myavg > 70)
Begin
print '本班笔试成绩优秀,前三名的成绩为:'
Select top 3 * from stuMarks Order by writtenExam DESC
End
Else
Begin
print '本班笔试成绩较差,后三名的成绩为:'
Select top 3 * from stuMarks order by writtenExam
End
为了把输出的表格数据和文本消息显示在同一个窗口中,需要做如下设置。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

使用正则表达式从PHP数组中去除重复值的方法:使用正则表达式/(.*)(.+)/i匹配并替换重复项。遍历数组元素,使用preg_match检查匹配情况。如果匹配,跳过值;否则,将其添加到无重复值的新数组中。

1、编程可以用于开发各种软件和应用程序,包括网站、手机应用、游戏和数据分析工具等。它的应用领域非常广泛,覆盖了几乎所有行业,包括科学研究、医疗保健、金融、教育、娱乐等。2、学习编程可以帮助我们提高问题解决能力和逻辑思维能力。编程过程中,我们需要分析和理解问题,找出解决方案,并将其转化为代码。这种思维方式能够培养我们的分析和抽象能力,提高我们解决实际问题的能力。

C语言是初学者学习编程的理想选择,其优势包括效率、多功能性和可移植性。学习C语言需要:安装C编译器(如MinGW或Cygwin)了解变量、数据类型、条件语句和循环语句编写包含主函数和printf()函数的第一个程序通过实战案例(如计算平均数)练习C语言知识

Python 使初学者能够解决问题。其用户友好的语法、广泛的库以及变量、条件语句和循环等功能可实现高效的代码开发。从管理数据到控制程序流程和执行重复任务,Python 提供了

使用Golang构建基于浏览器的应用程序Golang结合JavaScript构建了动态的前端体验。安装Golang:访问https://golang.org/doc/install。设置Golang项目:创建一个名为main.go的文件。使用GorillaWebToolkit:添加GorillaWebToolkit代码以处理HTTP请求。创建HTML模板:在templates子目录中创建index.html,这是主模板。

通过GoGet,可以快速便捷地获取Go模块,步骤如下:在终端中运行:goget[module-path],其中module-path为模块路径。GoGet会自动下载模块及其依赖项。安装的位置由GOPATH环境变量指定。

C++编程谜题涵盖斐波那契数列、阶乘、汉明距离、数组最大值和最小值等算法和数据结构概念,通过解决这些谜题,可以巩固C++知识,提升算法理解和编程技巧。

GoFmt命令是一个代码格式化工具,可自动格式化Go源代码,使其符合Go语言风格指南的约定,从而提高代码的可读性、一致性和美观性。使用方法:在终端输入gofmtsource_files.go,高级选项包括:使用-w将格式化后的代码写入源文件;使用-d仅显示要进行的更改;使用-e报告未格式化的文件。
