变量
T-SQL中的变量分为两种:局部变量和全局变量
局部变量是用户可自定义的变量,它的作用范围仅在程序内部。局部变量必须先声明,再使用,名称必须以一个@开头。
声明局部变量 declare 以@开头的变量名 类型[长度]
局部变量赋值 set 局部变量名=值
注意:局部变量的声明和赋值必须分开进行
全局变量是SQL系统内部事先定义好的变量、不用用户参与定义,任何程序均可随时调用;SQL中共有30多个全局变量,名称都是以@@开头,主要用于SQL Server的配置设定值和效能统计数据
运算符
算术运算符:+,-,*,/,%
赋值运算符:=
比较运算符 :>,<,>=,<=,=,!=,<>,!>,!<
逻辑运算符:
all,and,any,between,exists,in,like,not,or,some
字符串串联运算符 :+
按位运算符:&,|,^,~
运算符的优先顺序
+(正)、-(负)、 ~ (按位 NOT)
*(乘)、/(除)、%(模)
+(加)、(+ 串联)、-(减)
=,? >,? <,? >=,? <=,? <>,? !=,? !>,? !< 比较运算符
^(位异或)、&(位与)、|(位或)
NOT
AND
ALL、ANY、BETWEEN、IN、LIKE、OR、SOME
=(赋值)
流程控制
begin…and:定义语句块。
Break:退出最内层的WHILE 循环。
continue重新开始WHILE 循环。
gotolabel从 label 所定义的 label 之后的语句处继续进行处理。
if…else定义条件以及当一个条件为 FALSE 时的操作。
return无条件退出。
waitfor为语句的执行设置延迟
while当特定条件为 TRUE 时重复语句。
IF...ELSE语句
IF…ELSE语句是条件判断语句,其中,ELSE子句是可选的,最简单的IF语句没有ELSE子句部分。IF…ELSE语句用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。SQL Server允许嵌套使用IF…ELSE语句,而且嵌套层数没有限制。
语法:
IF 逻辑表达式
{语句1或语句块1
}
[ELSE
{语句2或语句块2}
]
BEGIN…END语句块
BEGIN…END语句能够将多个Transact-SQL语句组合成一个语句块,并将它们视为一个单元处理。在条件语句和循环等控制流程语句中,当符合特定条件便要执行两个或者多个语句时,就需要使用BEGIN…END语句.相当于一对括号.
其语法形式为:
BEGIN
语句1或语句块1
语句2或语句块2
…
END
WHILE语句
WHILE语句用于设置重复执行 SQL 语句或语句块的条件,只要指定条件为真,就重复执行语句.
其语法格式如下:
WHILE布尔表达式
{ SQL语句}
[ BREAK ]
{ SQL语句}
[ CONTINUE ]
BREAK:程序完全跳出循环,结束WHILE语句的执行
CONTINUE:程序跳过CONTINUE语句后面的语句,回到WHILE循环的第一行命令
GOTO语句
GOTO语句是无条件转移语句.GOTO语句可以使程序直接跳到指定的标有标号的位置处继续执行,而位于GOTO语句和标号之间的程序将不会被执行。GOTO语句和标识符可以用在语句块、批处理和存储过程中,
语法格式为:
GOTO 标号
--标号可以为数字与字符的组合,但必须以“:”结尾。
RETURN语句
RETURN语句可以实现无条件终止执行的批处理命令、存储过程或触发器
declare @i int
set @i=0
while @i<10
begin
set @i=@i+1
if @i%3=0
return --终止整个批处理
print @i
end
使用return返回状态值
RETUEN语句还可以返回状态值,即RETURN语句只能返回整数,在存储过程中RETURN不能返回空值,默认返回值是0。也可以用它替换输出参数返回整型值。
存储过程中return与output区别
共同点:都返回值(但return只能返回int类型)
不同点:
1. output是定义变量是不是可以返回值
2. output没有return从查询或过程中无条件退出的功能
3. return返回值在函数和过程中不需要用output来定义
常用系统存储过程
sp_help对象名
用来查看数据库对象信息
exec sp_helpp_a
sp_helptext对象名
用来显示存储过程和其它对象的文本
exec sp_helptextp_a
sp_MSgetversion
用来获得Microsoft SQL Server的当前版本
(SELECT @@version可获得更多版本信息)
sp_helpdb数据库名
用来显示数据库相关信息
扩展存储过程
扩展存储过程与普通存储过程一样,执行方法也相同。可将参数传递给扩展存储过程,扩展存储过程可返回结果,也可返回状态。扩展存储过程可用于扩展Microsoft® SQL Server™ 2000的功能。
扩展存储过程既有系统自带的,又可自行编写.扩展存储过程只能添加到 master 数据库中
关于扩展存储过程只需简单了解,下面有几个常用的系统自带的扩展存储过程,
常用扩展存储过程
xp_cmdshell
为一个操作系统外壳执行指定命令串,并作为文本返回输出。
例: use master
exec xp_cmdshell 'dir d:\‘
exec xp_cmdshell 'md d:\aa'
xp_dirtree
用于为在扩展存储(xp)中命名的文件夹列出所有文件夹
例:
EXEC master..xp_dirtree ‘d:\'
xp_subdirs
用于为在扩展存储(xp)中命名的文件夹列出文件夹列表。只返回深度为一的文件
例:
EXEC master..xp_subdirs ‘d:\'