t-sql语句自定义函数与控制流语句用法

发布时间:2020-01-11编辑:脚本学堂
本文介绍了t-sql语句中自定义函数与流利控制语句的用法,包括变量函数、内联表值函数、多语句表值函数、控制注语句的实例教程等。

一、自定义函数
 

1、内联表值函数:返回值为可更新表。函数内包含单个select语句且该语句可更新,则返回的表也可以更新。
2、多语句表值函数:返回值为不可更新表。函数内包含多个select语句且该语句可更新,则返回的表不可更新。
3、标量函数:返回值为标量值。

在数据库中,自定义函数由一个或者多个t-sql语句构成的子程序,用于封装用户代码。

定义格式:
 

create function 函数名(参数列表)
returns数据类型---定义返回值类型
as
begin

1、变量函数
 

create function max2( @par1 real , @par2 real)
returns real
as
begin
 declare @par real
 if @par1 > @par2
 set @par = @par1
 else
 set @par = @par2;
 return @par
end

2、内联表值函数

create function showPerson( @par int )
returns table
as
return
 select * from Person where Pno = @par
select * from dbo.showPerson(2);
 

 
3、多语句表值函数
 

create function showStudent ( @xuehao varchar(12) )
returns @chengji table( xuehao nchar(12) , xingming nchar(20) )
as
begin
 insert @chengji
 select xuehao , xingming from student where xuehao = @xuehao
 return
end

二、控制流语句

1、IF --- ELSE

IF…ELSE语句是条件判断语句,其中,ELSE子句是可选的,最简单的IF语句没有ELSE子句部分。

IF…ELSE语句用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。

 2、BEGIN --- END

BEGIN…END语句能够将多个Transact-SQL语句组合成一个语句块,并将它们视为一个单元处理。

在条件语句和循环等控制流程语句中,当符合特定条件便要执行两个或者多个语句时,就需要使用BEGIN…END语句。

其语法形式为:

BEGIN

{ sql_statement | statement_block }

END

3、CASE函数

CASE函数可以计算多个条件式,并将其中一个符合条件的结果表达式返回。

CASE函数按照使用形式的不同,可以分为简单CASE函数和搜索CASE函数。

例:
 

Select Pname,age,
case prof
 When '总经理' then '高层干部'
 When '部门经理' then '高层干部'
 When '主任' then '中层干部'
 When '组长' then '基层干部'
End
From person

4、WHILE…continuebreak语句
CONTINUE语句可以使程序跳过CONTINUE语句后面的语句,回到WHILE循环的第一行命令。
BREAK语句则使程序完全跳出循环,结束WHILE语句的执行。

5、GOTO语句
GOTO语句可以使程序直接跳到指定的标有标识符的位置处继续执行,而位于GOTO语句和标识符之间的程序将不会被执行。
GOTO语句和标识符可以用在语句块、批处理和存储过程中,标识符可以为数字与字符的组合,但必须以“:”结尾。

例:利用GOTO语句求出从加到的总和。
 

declare@sum int, @count int
select @sum=0, @count=1
label_1:
select@sum=@sum+@count
select@count=@count+1
if @count<=5
 gotolabel_1
select@count,@sum

6、WAITFOR语句
WAITFOR语句用于暂时停止执行SQL语句、语句块或者存储过程等,直到所设定的时间已过或者所设定的时间已到才继续执行。
WAITFOR语句的语法形式为:WAITFOR { DELAY 'time' | TIME 'time' }
其中,DELAY用于指定时间间隔,TIME用于指定某一时刻,其数据类型为datetime,格式为‘hh:mm:ss’。
 

waitfor time'12:52'
select * from person

7.RETURN语句
RETURN语句用于无条件地终止一个查询、存储过程或者批处理,此时位于RETURN语句之后的程序将不会被执行。
RETURN语句的语法形式为:RETURN [ integer_expression ]
其中,参数integer_expression为返回的整型值。

存储过程可以给调用过程或应用程序返回整型值。