sqlserver 函数篇

谈到函数和存储过程,我对她们就像苍老师一样只闻其人未有真正的体验过啊!SO为了下周的幸福只能撸几下啦。。

函数定义

函数是用来执行可返回值到调用程序的计算或把计算集成到结果集众。-----《SQL从入门到精通》

夹杂点个人的理解:函数类似于面向对象中的方法,通过它的一系列操作来满足你内心深处的需求(貌似很强大的样子)

函数的好处

无论是自己创建还是调用系统中的函数都能从某种程度上提高了工作的效率;想想微软大叔提供的那些内置函数吧,是不是有那种不经意间找到种子的感觉;

函数的分类

标量函数:返回一个实际的数值;

表值函数:返回一个表,她分为两种类型:内联和多语句。

函数的通用语法

sqlserver 函数篇
 1 /*
 2   标量函数语法
 3 */
 4  CREATE FUNCTION [scheam_name.] function_name
 5  ([{@parameter_name[AS][type_schema_name.] parameter_data_type [=default]
 6  [READONLY]},[,...N])
 7  RETURNS return_date_type
 8  [AS]
 9    BEGIN
10       function_body
11       return scalar_expression
12    END
13   
14   
15   /*
16    多语句表值函数的语法格式
17 */
18 CREATE FUNCTION [scheam_name.] function_name
19  ([{@parameter_name[AS][type_schema_name.] parameter_data_type [=default]
20  [READONLY]},[,...N])
21  RETURNS @return_variable TABLE <table_type_definition>
22  [AS]
23   begin
24     function_body
25     return
26   end
27    
28 /*
29   内联表值函数语法
30 */
31  CREATE FUNCTION [scheam_name.] function_name
32  ([{@parameter_name[AS][type_schema_name.] parameter_data_type [=default]
33  [READONLY]},[,...N])
34  RETURNS TABLE
35  [AS]
36   RETURN [() select_stmt []]
37   
38   
39 
40   
41  
View Code

 标量函数的使用

sqlserver 函数篇
 1 /*
 2    标量函数的使用
 3  */
 4  --计算两个整数的和
 5   CREATE FUNCTION fn_JF_addTwoNum(@aa int,@bb int)
 6   RETURNS int
 7   as
 8   begin
 9     declare @c int 
10     set @c=@aa+@bb
11     return @c;
12   end
13   --调用方式
14  print  dbo.fn_JF_addTwoNum(1,2)
15  select dbo.fn_JF_addTwoNum(1,2)
View Code

表值函数的使用

sqlserver 函数篇
1   /*内联表值函数的使用*/
2   CREATE FUNCTION fn_GetStuInfo(@stuNo nvarchar(50))
3   returns table
4   as
5   return
6     (select s.[stuNo],s.[name],g.grade from StuInfo s  inner join gradeInfo  g 
7     on  s.stuNO=g.stuNo where s.[stuNo]=@stuNo); 
8     --调用方式
9     select * from fn_GetStuInfo(2013)
View Code
sqlserver 函数篇
 1 /*多语句表值函数*/
 2     CREATE FUNCTION fn_GetStuGradeInfo(@stuNo nvarchar(50))
 3     returns @table_name table(
 4     stuNo nvarchar(50),
 5     name nvarchar(50),
 6     grade int
 7     )
 8     as 
 9     begin
10       declare @name nvarchar(50),@grade int
11       select @name=s.[name],@grade=g.grade from StuInfo s  inner join gradeInfo  g 
12     on  s.stuNO=g.stuNo where s.[stuNo]=@stuNo
13       insert into @table_name(stuNo,name,grade) values(@stuNo,@name,@grade)
14       return
15     end
16     --调用方式
17     select * from fn_GetStuGradeInfo(2013)
View Code

 后记:

    该想想晚上应该吃点啥子了。。。。。。

sqlserver 函数篇,布布扣,bubuko.com

sqlserver 函数篇

上一篇:Photoshop巧用液化滤镜调出胖妞的完美身材教程


下一篇:mysql 基本操作