创建用户自定义标量函数
版权声明:原创作品,谢绝转载!否则将追究法律责任。 |
目的:你们公司所销售的产品遵从基于产品类别的变化税率。一些产品,比如饮料是高税率产品,而像佐料这样的产品是免税。你决定建立一个用户自定义函数来封装这个收税的逻辑。这个用户自定义函数为管理税率与简化必须重复的逻辑部分提供了一个中心场所。
创建一个名称为fn_TaxRate的标量用户自定义函数,该函数封装了CASE语句,它接受一个参数@ProdID int并返回一个numeric(5,4)数据类型的值。
l 测试函数
在本过程中,用从产品表中选择列的方法来测试你刚才创建的函数。
执行下面的SELECT语句,从产品表中选择ProductName,UnitPrice,CategoryID,TaxRate以及一个计算值PriceWithTax。
select productname,unitprice,categoryid,dbo.fn_taxrate(productid) as taxrate,
unitprice*dbo.fn_taxrate(productid) as pricewithtax from products
TaxRate 列对每个产品都应该包含这样的值:1.00或者1.05或者1.10。 PriceWithTax列应该包含TaxRate列与UnitPrice列的乘积。代码:
USE Northwind
GO CREATE FUNCTION fn_TaxRate
(@ProdID INT) RETURNS numeric(5,4) AS BEGIN RETURN (SELECT CASE CategoryID WHEN 1 THEN 1.10 WHEN 2 THEN 1 WHEN 3 THEN 1.10 WHEN 4 THEN 1.05 WHEN 5 THEN 1 WHEN 6 THEN 1.05 WHEN 7 THEN 1 WHEN 8 THEN 1.05 END FROM Products WHERE ProductID = @ProdID) END GO SELECT ProductName, UnitPrice, CategoryID, Northwind.dbo.fn_TaxRate(ProductID) AS TaxRate, UnitPrice * Northwind.dbo.fn_TaxRate(ProductID) AS PriceWithTax FROM Products 本文出自 “┿⊙清风月影┿” 博客,谢绝转载! 本文出自 51CTO.COM技术博客 |



Yofee
博客统计信息
热门文章
最新评论
友情链接