T-SQL(二)自定义函数的控制流语句

来源:互联网 发布:php易支付 编辑:程序博客网 时间:2024/05/24 03:06

    自定义函数

       内联表值函数:返回值为可更新表。函数内包含单个select语句且该语句可更新,则返回的表也可以更新。

       多语句表值函数:返回值为不可更新表。函数内包含多个select语句且该语句可更新,则返回的表不可更新。

       标量函数:返回值为标量值。

       自定义函数由一个或者多个T-SQL语句构成的子程序,用于封装用户代码

       定义格式:

       CREATEFUNCTION 函数名(参数列表)

       RETURNS数据类型---定义返回值类型

       AS

       BEGIN

     

       变量函数

       create function max2( @par1real , @par2 real)

       returns real

       as

       begin

          declare @par real

          if @par1 > @par2

              set @par = @par1

          else

              set @par = @par2;

          return @par

       end

     

       内联表值函数

       createfunction showPerson( @parint )

       returnstable

       as

       return

          select * from Person where Pno = @par

       select* from dbo.showPerson(2);

     

       多语句表值函数

       create function showStudent( @xuehao varchar(12))

       returns @chengji table( xuehao nchar(12), xingming nchar(20))

       as

       begin

          insert @chengji

          select xuehao , xingmingfrom student where xuehao= @xuehao

          return

       end

     

    控制流语句

       1、IF--- ELSE

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

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

      2BEGIN ---END

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

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

       其语法形式为:

       BEGIN

         { sql_statement | statement_block }

       END

       3CASE函数

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

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

       例:

       Select Pname,age,

       case prof

          When '总经理'then '高层干部'

          When '部门经理'then '高层干部'

          When '主任'then '中层干部'

          When '组长'then '基层干部'

       End

       From person

       4WHILECONTINUEBREAK语句

       CONTINUE语句可以使程序跳过CONTINUE语句后面的语句,回到WHILE循环的第一行命令。

       BREAK语句则使程序完全跳出循环,结束WHILE语句的执行。

       5GOTO语句

       GOTO语句可以使程序直接跳到指定的标有标识符的位置处继续执行,而位于GOTO语句和标识符之间的程序将不会被执行。

       GOTO语句和标识符可以用在语句块、批处理和存储过程中,标识符可以为数字与字符的组合,但必须以结尾。

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

       declare @sum int, @countint

       select  @sum=0, @count=1

       label_1:

       select @sum=@sum+@count

       select @count=@count+1

       if  @count<=5

          goto  label_1

       select @count  ,  @sum

      6WAITFOR语句

       WAITFOR语句用于暂时停止执行SQL语句、语句块或者存储过程等,直到所设定的时间已过或者所设定的时间已到才继续执行。

       WAITFOR语句的语法形式为:WAITFOR{ DELAY 'time' | TIME 'time'}

       其中,DELAY用于指定时间间隔,TIME用于指定某一时刻,其数据类型为datetime,格式为hh:mm:ss’

       waitfortime  '12:52'

       select* from person

       7RETURN语句

       RETURN语句用于无条件地终止一个查询、存储过程或者批处理,此时位于RETURN语句之后的程序将不会被执行。

       RETURN语句的语法形式为:RETURN [ integer_expression ]

       其中,参数integer_expression为返回的整型值。存储过程可以给调用过程或应用程序返回整型值。


    0 0