数据库基础--自定义函数

--标量自定义函数
USE Northwind
CREATE FUNCTION fn_NewRegion
  (@myinput nvarchar(30))
  RETURNS nvarchar(30)
BEGIN
  IF @myinput IS NULL
  SET @myinput = 'Not Applicable'
  RETURN @myinput
END


--自定义函数的调用
SELECT LastName, City,Region, dbo.fn_NewRegion(Region)
AS Region1,
Country
FROM Employees

------------------------------
USE Northwind
CREATE FUNCTION fn_DateFormat
(@indate datetime, @separator char(1))
RETURNS Nchar(20)
AS
BEGIN
RETURN
CONVERT(Nvarchar(20), datepart(mm,@indate))
+ @separator
+ CONVERT(Nvarchar(20), datepart(dd, @indate))
+ @separator
+ CONVERT(Nvarchar(20), datepart(yy, @indate))
END
SELECT dbo.fn_DateFormat(GETDATE(),':')
--------------------------------
USE Northwind
GO
CREATE FUNCTION fn_CustomerNamesInRegion
  ( @RegionParameter nvarchar(30) )
RETURNS table
AS
RETURN (
SELECT CustomerID, CompanyName
FROM Northwind.dbo.Customers
WHERE Region = @RegionParameter
)
SELECT * FROM fn_CustomerNamesInRegion(N'WA')
-------------------------------
USE Northwind
GO
CREATE FUNCTION fn_Employees (@length nvarchar(9))
RETURNS @fn_Employees table
  (EmployeeID int PRIMARY KEY NOT NULL,
  [Employee Name] nvarchar(61) NOT NULL)
AS
BEGIN
  IF @length = 'ShortName'
    INSERT @fn_Employees SELECT EmployeeID, LastName FROM Employees
  ELSE IF @length = 'LongName'
    INSERT @fn_Employees SELECT EmployeeID,(FirstName + ' ' + LastName) FROM Employees
RETURN
END
--调用函数
SELECT * FROM dbo.fn_Employees('LongName')
Or
SELECT * FROM dbo.fn_Employees('ShortName')
--TABLE变量
USE pubs
DECLARE @pricelist
TABLE(tid varchar(6), price money)
INSERT @pricelist SELECT title_id, price FROM titles
SELECT * FROM @pricelist
“内嵌表值函数”与视图的区别(均是单行 SELECT)
内嵌表值函数可以带参数
“多语句表值函数”与存储过程的区别(均可以有多行 T-SQL 语句)
多语句表值函数可以象“表/视图”一样使用
--修改和删除自定义函数
--修改
ALTER FUNCTION dbo.fn_NewRegion
  <New function content>
--删除
DROP FUNCTION dbo.fn_NewRegion
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值