ms sql server 2000可以自定义函数,因为函数可以返回一个table,所以在很多地方可以用函数来简化sql script
1:
传递数组
比如想查询上海,北京,山东,天津....等一系列地区的客户信息
s = '上海,北京,山东,天津,....'
用
select * from site where Province in
是不行的,可以借助函数来实现
2:
封装逻辑
比如表的结构如下,客户:customer,联系人:contact,地址:site,分区:territory,客户的技术支持:support,客户参加的活动:activity,客户的交互:interaction,客户的订单:order,客户的报价:quotation,
每月有support, activity,interaction,order,quotation等报表
每个报表的都包含一些对customer, contact, site, territory的处理逻辑,而且他们是相同的,如果在每个报表都实现的这些逻辑的话,会给我们地维护带来很多麻烦,比如修改需求,希望每个报表显示contact的手机号码而不是传真号码,或者希望报表上显示contact的积分等等。
把这些逻辑封装在函数里面就可以大大简化编程和维护的工作,而且比用view有优势
比如可以写成
support报表
select c.*, s.*, supportType, supportProblem, supportSolution, supportOwner
from support
inner join GetContactAndCustomer(@customerid, @customername, @contactname, .....) as c
inner join GetSiteAndTerritory(@city, @zipcode, @province, ....) as s on s.siteID = c.siteID
on support.contactID = c.contactID
order报表
select c.*, s.*, product, amount
from order
inner join GetContactAndCustomer(@customerid, @customername, @contactname, .....) as c on order.contactID = c.contactID
inner join GetSiteAndTerritory (@city, @zipcode, @province, ....) as s on order.siteID = s.siteID
打印 | 张贴于 2004-02-25 17:52:00 | Tag:暂无标签

留言反馈