SQL数据库存储过程(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CharmingDang/article/details/78423100
变量
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:\'

猜你喜欢

转载自blog.csdn.net/CharmingDang/article/details/78423100