分享
 
 
 

在SqlServer中用自定义函数返回动态表内容

王朝mssql·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

说明:在SupplyPlan表中,存储着每一个RequestQty及其对应的开始终止日期段;因为我在以后处理中要判断当前天属于哪一条RequestQty的日期区间并进行处理,所以后台数据库只能设计成这种存储形式;但是在页面的显示时候,需要动态的根据每一个SupplyPlanNo生成对应的多条日期区段及其数量显示,所以采用自定义函数形式返回处理以后的动态记录集!返回的字段@AllRequestQty为"1|13|5|8"形式,在asp中就可以采用split函数分组从而动态显示字段。

/*

** add by wls For: convert many lines of SP datas to one char group by vehicle,part

*/

CREATE FUNCTION xzc.fn_getContent_SupplyPlan

(@s_p_no int = NULL,

@viewFlag varchar(1) = ''

)

RETURNS @fn_getContent_SupplyPlan TABLE

(

ID varchar(8000),

SupplyPlanNo int,

Vehicle varchar(25),

Sort varchar(20),

Part varchar(25),

RequestQty varchar(8000),

Remark varchar(255)

)

AS

BEGIN

DECLARE @sVehicle varchar(25), @sSort varchar(20)

DECLARE @sPart varchar(25), @iVehicle varchar(25)

DECLARE @iPart varchar(25), @sRemark varchar(255)

DECLARE @RequestQty int , @theID int

DECLARE @AllRequestQty varchar(8000), @allID varchar(8000)

select @AllRequestQty = ''

select @allID = ''

/*Outer CURSOR*/

DECLARE getVehiclePartSP CURSOR SCROLL FOR

select distinct Vehicle, Sort, Part from SupplyPlan

where SupplyPlanNo = @s_p_no and ViewFlag = @viewFlag

/* --Order by ID desc

select Vehicle, Sort, Part from (select min(ID) as ID, Vehicle, Sort, Part from SupplyPlan

where SupplyPlanNo = @s_p_no group by Vehicle, Sort, Part) a order by a.ID desc

*/

/*Inner CURSOR*/

DECLARE getContentSP CURSOR SCROLL FOR

select ID, Vehicle, Part, RequestQty

from SupplyPlan where SupplyPlanNo = @s_p_no and ViewFlag = @viewFlag order by ID

if @s_p_no IS NULL or @s_p_no = ''

begin

RETURN

end

OPEN getVehiclePartSP

FETCH first from getVehiclePartSP into @sVehicle,@sSort,@sPart

while(@@fetch_status = 0)

BEGIN

OPEN getContentSP

FETCH first from getContentSP into @theID, @iVehicle, @iPart, @RequestQty

while(@@fetch_status = 0)

BEGIN

if @iVehicle = @sVehicle and @iPart = @sPart

begin

select @allID = @allID + '|' + convert(varchar(15), @theID)

select @AllRequestQty = @AllRequestQty + '|' + convert(varchar(25), @RequestQty)

end

FETCH next from getContentSP into @theID, @iVehicle, @iPart, @RequestQty

END

CLOSE getContentSP

select @allID = xzc.trim_char(@allID, '|')

select @AllRequestQty = xzc.trim_char(@AllRequestQty, '|')

select @sRemark = (select top 1 Remark from SupplyPlan where SupplyPlanNo = @s_p_no

and Vehicle = @sVehicle and Part = @sPart)

INSERT INTO @fn_getContent_SupplyPlan VALUES(@allID, @s_p_no, @sVehicle, @sSort, @sPart, @AllRequestQty, @sRemark)

select @AllRequestQty = ''

select @allID = ''

select @sRemark = ''

FETCH next from getVehiclePartSP into @sVehicle,@sSort,@sPart

END

DEALLOCATE getContentSP

CLOSE getVehiclePartSP

DEALLOCATE getVehiclePartSP

RETURN

END

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有