MicroHelper.Net

雷锋说.对待朋友要MicroHelper,对待敌人要害尔扑
随笔 - 74, 评论 - 431, 引用 - 7

导航

工具

关于

邮件系统不稳定,使用songdming at 263 dot net吧
PageRank

FastCounter by bCentral

 

标签

每月存档

广告



访客

 

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:暂无标签

留言反馈

暂时没有留言纪录
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode MVC Blogger System