赞
踩
目录
SQL SERVER的函数是由一个或多个TSQL语句组成的用于实现某种功能的子程序,可以封装实现某功能的TSQL语句组以实现代码的重用。
用户可以根据自己的需求编写自定义函数,而自定义函数根据输出的类型可以分为以下三种:
标量型函数返回的是某种常规的数据类型,如INT、nchar等,但不能是text、ntext、image和timestamp。
- CREATE FUNCTION function_name
- (<@形参名> <数据类型>[,...n])
- RETURNS <返回值数据类型>
- AS
- BEGIN
- <TSQL语句>
- 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
对于内联表值型函数,没有函数主体,表是单个SELECT语句的结果集,返回的类型是TABLE数据类型(可以理解为返回一个表)
- CREATE FUNCTION <function_name>
- ([<@形参名> <数据类型>[,...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)
多语句表值型函数,返回的数据类型为表,但是不同于内联表值型函数,返回的表可以再定义,自己定义表的结构,在函数体中将符合条件的数据插入该表并返回。
- CREATE FUNCTION <function_name>
- ([<@形参名> <数据类型>[,...n]])
- RETURNS <@返回变量> TABLE(表结构定义)
- AS
- BEGIN
- <TSQL语句>
- 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

1. 查看用户自定义函数的TSQL语句
- EXEC sp_helptext <function_name>
- |EXEC sp_help <function_name>
2. 修改用户定义的函数
将关键字CREATE改为ALTER即可。
3. 删除用户定义函数
DROP FUNCTION <function_name>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。