SQL SEREVER中的自定义函数

目录

1. 表量型函数

 2. 内联表值型函数

 3. 多语句表值型函数

 管理用户自定义函数

        SQL SERVER的函数是由一个或多个TSQL语句组成的用于实现某种功能的子程序,可以封装实现某功能的TSQL语句组以实现代码的重用。

        用户可以根据自己的需求编写自定义函数,而自定义函数根据输出的类型可以分为以下三种:

1. 表量型函数

        标量型函数返回的是某种常规的数据类型,如INT、nchar等,但不能是text、ntext、image和timestamp。

CREATE FUNCTION function_name
    (<@形参名> <数据类型>[,...n])
    RETURNS <返回值数据类型>
AS
BEGIN
    
    RETURN <返回表达式>
END
--函数功能当输入需要查询的产品ID时返回产品名称
GO
CREATE FUNCTION inquire_ProductName
	(@Product_ID nvarchar(50))
	RETURNS NVARCHAR(255)
AS
BEGIN
	DECLARE @ProductName nvarchar(255)
	SELECT @ProductName=[产品名称] FROM [产品数据]
	WHERE [产品ID]=@Product_ID
	RETURN @ProductName
END

 2. 内联表值型函数

        对于内联表值型函数,没有函数主体,表是单个SELECT语句的结果集,返回的类型是TABLE数据类型(可以理解为返回一个表)

CREATE FUNCTION 
    ([<@形参名> <数据类型>[,...n]])
    RETURNS TABLE
AS
    RETURN(SELECT 查询语句)
--函数功能:提供一个产品ID,返回该产品ID的所有信息
GO
CREATE FUNCTION inquire_AllInfo
(@productId nvarchar(255))
RETURNS TABLE
AS
	RETURN(SELECT * FROM [产品数据]
			WHERE 产品ID=@productId)

 3. 多语句表值型函数

        多语句表值型函数,返回的数据类型为表,但是不同于内联表值型函数,返回的表可以再定义,自己定义表的结构,在函数体中将符合条件的数据插入该表并返回。

CREATE FUNCTION 
([<@形参名> <数据类型>[,...n]])
RETURNS <@返回变量> TABLE(表结构定义)
AS
BEGIN
    
    RETURN
END
--函数功能:输入产品ID返回该产品的所有信息
GO
CREATE FUNCTION inquire_ALLInfomation
(@ProductId nvarchar(255))
RETURNS @tb TABLE(
	产品ID NVARCHAR(255),
	产品名称 NVARCHAR(255),
	子类别 NVARCHAR(255),
	类别 NVARCHAR(255)
)
AS
BEGIN
	INSERT INTO @tb SELECT * FROM [产品数据] 
					WHERE [产品ID]=@ProductId
	RETURN
END

 4.管理用户自定义函数

1. 查看用户自定义函数的TSQL语句

EXEC sp_helptext 
|EXEC sp_help 

SQL SEREVER中的自定义函数_第1张图片

 2. 修改用户定义的函数

将关键字CREATE改为ALTER即可。

3. 删除用户定义函数

DROP FUNCTION

你可能感兴趣的:(sqlserver,sqlserver)