MySQL的学习笔记(9)

SQL Server用户自定义函数:

|| SQL Server用户自定义的函数有:标量函数、表值函数(内联表值函数、多语句表值函数)两种。


标量函数:所谓标量函数就是返回的结果只是一个标量(一种类型的一个值)。

CREATE FUNCTION GetSum
(
    @firstNum int,
    @secondNum int
)
RETURNS int
AS
BEGIN
    
    DECLARE @result int

    
    SELECT @result=@firstNum+@secondNum

    
    RETURN @result

END
GO

题外话:我们来看看上面的写法,对于SQL Server来讲,我们声明一个变量的方式是用@变量名,而且相对于编程来讲:以下是其不同点
1:声明时是先变量后面才是类型。
2:对于返回方式,SQL Server函数的返回类型并不放在函数名前面,而是函数名括号的后面。而且函数的返回类型需要用到返回关键字RETURNS,而不是RETURN。
3:函数体。若需要在函数体里面声明变量的话,则需要使用到DECLARE关键字进行声明。函数体内的返回才是关键字RETURN。 它的函数体写法:

AS
BEGIN
    -- 函数体
END

内联表值函数:返回的是表。表的类型就是Table。

CREATE FUNCTION [GetMoreThanSalary]
(    
    @salary int
)
RETURNS TABLE 
AS
RETURN 
(
    SELECT [FName],[FCity],[FAge],[FSalary] FROM [Demo].[dbo].[T_Person] Where [FSalary] > @salary
)
GO

题外话:标量函数上面提过的内容,这里就不重复了。内联表函数返回的表结构由函数体内的SELECT语句来决定。
对于标量函数来讲,函数体是包含在如下结构中。

AS
BEGIN
    -- 函数体
END

但是对于内联表值函数来讲,函数体的结构则是如下的方式。内联表值函数只执行一条SQL语句后返回Table结果。

AS
RETURN
    -- 函数体
END

多语句表值函数:能够支持多条语句的执行来创建Table数据。
(类似于一个返回类型为表的标量函数,需要指定具体的Table类型的结构。也就是说返回的Table,已经定义好要哪些字段返回)
写法如下:

ALTER FUNCTION DemoFun
(
)
RETURNS 
@result TABLE 
(
    name nvarchar(20),
    city nvarchar(20),
    age int,
    salary int
)
AS
BEGIN
  
    insert into @result(name, city, age, salary)
    select FName,FCity,FAge,FSalary from dbo.T_Person where FSalary>8000
    insert into @result(name, city, age, salary) values
    ('测试','China', 1, 0)
    RETURN 
END
GO
发布了49 篇原创文章 · 获赞 77 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/a13352912632/article/details/104475725