T-SQL 语句(八)—— 用户自定函数

T-SQL 语句(八)—— 用户自定函数
一、用户自定义函数与储存过程比较
优点:

1、用户定义函数可返回除了text,ntext,image,cursor和timestamp类型之外的所有数据类型,而存储过程只能返回整数值。
  2、用户定义函数执行方式灵活,可以通过 EXECUTE 方式执行,也可以用在表达式中并以返回值的方式来取代函数名,而 EXECUTE 来执行。
#####不足:
  存储过程可以通过 output 返回数据,而用户定义函数只可以接受参数,不同通过output类型的参数返回值。
  存储过程中可以对数据和对象进行修改,而用户定义函数只能对数据进行修改,不能对数据库对象进行修改。

二、创建函数
-- 创建标量函数
CREATE FUNCTION func_getdate()
	RETURNS datetime
	BEGIN
		return getdate()
	END
GO
PRINT dbo.func_getdate()

-- 创建内嵌表值函数
CREATE FUNCTION getUserById(@userId INT)
RETURNS TABLE
AS
RETURN (SELECT id,name from users where id=@userId)
GO

select * from dbo.getUserById(1);


-- 创建多声明表值函数
CREATE FUNCTION getEmployee() 
	RETURNS @tbl TABLE(
		id INT NOT NULL,
		name NVARCHAR(20)
	)
BEGIN 
	INSERT @tbl(id,name) SELECT id,name FROM employee;	
	RETURN
END
GO
SELECT * FROM dbo.getEmployee()
GO
DROP FUNCTION getEmployee -- 删除自定义函数

常用自定义函数

CREATE FUNCTION fn_chinese_week_day(@week_day INT) -- 
	RETURNS NVARCHAR(3)
BEGIN
	DECLARE @w INT
	SET @w = @week_day % 7
	RETURN 
	CASE   @w
		WHEN 1 THEN '星期一'
		WHEN 2 THEN '星期二'
		WHEN 3 THEN '星期三'
		WHEN 4 THEN '星期四'
		WHEN 5 THEN '星期五'
		WHEN 6 THEN '星期六'
		ELSE '星期天'
	END
END
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值