T-SQL 自定义函数

 

初始化创建一个student表

 

snosnamessexsagesdept
1001张三20C1
1002李四22C2
1003李莉20C3
1004陈旭22C1
1005陈宇23C3
1006王五21C1
1007张莉莉20C2
1008王晓23C3
1009张斌22C1
1010张淑芳20C2
1011李天才21C3

 

1).创建标量函数的语法格式

 

 

CREATE FUNCTION [ schema_name. ] function_name 
( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type 
    [ = default ] } 
    [ ,...n ]
  ]
)
RETURNS return_data_type
    [ WITH <function_option> [ ,...n ] ]
    [ AS ]
    BEGIN 
                function_body 
        RETURN scalar_expression
    END
[ ; ]
 

 

其中参数说明如下:

   (1)function_name :用户自定义函数的名称,该名称在数据库中必须唯一。

   (2)@parameter_name :用户自定义的参数,如果函数的参数有默认值,在调用该函数是必须指定“DEFAULT”关键字才能获得默认值。

   (3)parameter_data_type :参数的l数据类型。

   (4)return_data_type:是标量用户自定义函数的返回值类型。

   (5) function_body :有一系列T-SQL语句组成的函数体。

   (6)scalar_expression:指定标量返回的数量值。


   【例】 统计某个系的平均年龄

 

 

 CREATE FUNCTION [dbo].[stu_info](@sdept varchar(10))
        RETURNS float
        AS 
         BEGIN 
           declare @sage float
           set @sage= (select avg(sage) from student where sdept=@sdept  group by sdept)
           RETURN @sage
        END
  ------------------------------------
SELECT dbo.stu_info('C1') as age

 

age
21

 

 2)创建直接表值函数语法格式 

 

 

CREATE FUNCTION [ schema_name. ] function_name 
( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type 
    [ = default ] } 
    [ ,...n ]
  ]
)
RETURNS TABLE
    [ WITH <function_option> [ ,...n ] ]
    [ AS ]
        RETURN (select_statement[])
   [ ; ]
 

 

参数说明如下:

 (1)TABLE:指定返回值为一个表。

 (2)select_statement:单个select语句确定返回的表的数据。


  【例】返回系别为C1的学生信息

 

 

CREATE FUNCTION stu_info(@sdept varchar(10))
RETURNS TABLE 
AS 
RETURN(SELECT * FROM dbo.student WHERE sdept=@sdept)
------------------------------
SELECT * FROM dbo.stu_info('C1')
 

 

 

 

3)创建多语句表值函数语法格式 

 

CREATE FUNCTION [ schema_name. ] function_name 
( [ { @parameter_name [ AS ][ type_schema_name. ] parameter_data_type 
    [ = default ] } 
    [ ,...n ]
  ]
)
RETURNS @return_variable TABLE   <ftable_type_definination> 
     [ WITH <function_option> [ ,...n ] ]
    [ AS ]
    BEGIN 
                function_body 
        RETURN scalar_expression
    END
[ ; ]
 

参数说明如下:

 

 (1)@return_variable:一个TABLE类型的变量用于存储和累积返回的表中的数据行。


【例】 查询年龄大于22的学生信息

 

CREATE FUNCTION stu_hage(@age int)
RETURNS @height_age TABLE(sno int ,sname varchar(10),ssex varchar(10),sage int ,sdept varchar(10)) 
AS 
BEGIN
  INSERT @height_age 
  SELECT * FROM  dbo.student where sage>@age
RETURN
END
------------------------
SELECT * FROM dbo.stu_hage(22)
 

sno sname ssex sage sdept 1005 陈宇 男 23 C3 1008 王晓 女 23 C3

 

snosnamessexsagesdept
1001张三......
1004陈旭......
1006王五......
1009张斌......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值