写的几个存储过程,复习下了

本文详细阐述了数据库需求分析过程,并介绍了物料管理系统的实现,包括制令用量表、成品成本分析以及未出货订单多阶物料需求用量表。通过自定义函数计算成本并展示物料清单、库存数量、未领料及在途量等关键信息。

ALTER proc [dbo].[proc_jiancebiao]

@zhiling varchar(1000)

AS

/***************************

名稱: [proc_jiancebiao]

作用: 製令多階物料用量表(檢測表)

參數:@zhiling,制令號,用","分隔開如:611603084,611000922

作者:kk

時間:-6-1

測試: exec proc_jiancebiao '611603084,611000922'

****************************/

SET NOCOUNT ON

declare @t_level table(itemcode varchar(20),child_itemcode varchar(20),level int,qty int)

declare @level int

declare @temp1 table(itemid varchar(20),itemname nvarchar(100),standards nvarchar(100),unit nvarchar(10),qty int)

declare @temp2 table(itemid varchar(20),storeQty int)

declare @temp3 table(itemid varchar(20),notGetQty int)

declare @temp4 table(itemid varchar(20),notReachQty int)

set @level=1

insert @t_level select ib01,ib03,@level,ib04*num from bomib t1

join (select mb04 as itemcode,mb06 as num from mocmb where ','+@zhiling+',' like '%'+mb01+mb02+'%') t2 on t1.ib01=t2.itemcode

while @@rowcount>0

begin

set @level=@level+1

insert @t_level select t1.ib01,t1.ib03,@level,t1.ib04*t2.qty from bomib t1

inner join @t_level t2 on t1.ib01=t2.child_itemcode

where t2.level=@level-1

end

--基本資料

insert @temp1 select child_itemcode as itemid,t2.ma02 as itemname,t2.ma03 as standards,t2.ma05 as unit,sum(qty) as qty from @t_level t1

join invma t2 on t1.child_itemcode = t2.ma01

group by child_itemcode,t2.ma02,t2.ma03,t2.ma05

--庫存數量

insert @temp2 select * from openrowset('MSDASQL',

'srsdb';'';'',

'select mb01 as itemid,sum(mb04) as store_num from invmb group by mb01')

--下單未領料

insert @temp3 select me04 as itemid,sum(me07) as notGetQty from mocme

where me10='N' and isnull(rtrim(me11),'')<>'' and dbo.changeDXDate(me11)>DATEADD(mm,-4,getdate()) and me01 in ('631','633','651','652')

group by me04

--在途量

insert @temp4 select tb04 as itemid,sum(isnull(tb06,0))-sum(isnull(tb07,0)) as notReachQty from purtb

where tb14='N' and isnull(rtrim(tb13),'')<>'' and dbo.changeDXDate(tb13)>DATEADD(mm,-4,getdate())

group by tb04

--查詢結果

select '制令別' as itemid,'制令號' as itemname,'品號' as standards,'數量' as unit,qty=null,storeqty=null,notgetqty=null,notreachqty=null

union all select mb01,mb02,mb04,cast(mb06 as varchar(15)),null,null,null,null from mocmb where ','+@zhiling+',' like '%'+mb01+mb02+'%'

union all select '------------','------------','-------------','------------',null,null,null,null

union all

select a.*,b.storeQty,isnull(c.notGetQty,0)as notGetQty,isnull(d.notReachQty,0) as notReachQty

from @temp1 a

left join @temp2 b on a.itemid=b.itemid

left join @temp3 c on a.itemid=c.itemid

left join @temp4 d on a.itemid=d.itemid

-------------------------------------------------------------------------

ALTER proc [dbo].[p_useThisItemProduct]

@itemcode varchar(20)

AS

/***************************

名稱:[p_useThisItemProduct]

作用:所有用到此物料的成品及其成本分析

參數:@itemcode ,物料品號

作者:kk

時間:-6-1

測試: exec p_useThisItemProduct 'PBXSEBIR6027AW2'

****************************/

declare @t_level table(itemcode varchar(20),level int)

declare @level int

set @level=1

--查找所有用到此物料的成品及半成品

insert @t_level select ib01,@level from bomib where ib03=@itemcode

while @@rowcount>0

begin

set @level=@level+1

insert @t_level select t1.ib01,@level from bomib t1

inner join @t_level t2 on t1.ib03=t2.itemcode

where t2.level=@level-1

end

--只保留成品

delete from @t_level where left(ltrim(itemcode),1)<>'F'

--展開物料清單,計算成本,使用自定義函數dbo.fun_costAnalyse()

select t1.itemcode,t2.ma02 as itemname,t2.ma03 as standards,dbo.fun_costAnalyse(t1.itemcode) as cost from @t_level t1

left join invma t2 on t1.itemcode = t2.ma01

--------------------------------------------------------

ALTER proc [dbo].[po_bomZ]

@start_date varchar(6),

@end_date varchar(6)

AS

/***************************

名稱:po_bomz

作用:未出貨訂單多階物料需求用量表

參數:@start_date,開始日期,@end_date,結束日期

作者:kk

時間:-6-1

測試: exec po_bomz '060530','060531'

****************************/

declare @t table(itemcode varchar(20),num int)

declare @t_level table(itemcode varchar(20),child_itemcode varchar(20),level int,qty int)

declare @level int

declare @temp1 table(itemid varchar(20),itemname nvarchar(100),standards nvarchar(100),unit nvarchar(10),qty int)

declare @temp2 table(itemid varchar(20),storeQty int)

declare @temp3 table(itemid varchar(20),notGetQty int)

declare @temp4 table(itemid varchar(20),notReachQty int)

set @level=1

insert @t select tc04 as itemcode,sum(isnull(tc06,0))-sum(isnull(tc07,0)) as num from coptb t1

left join coptc t2 on t1.tb01+t1.tb02=t2.tc01+t2.tc02

where t1.tb03 >= @start_date and t1.tb03<'1000000' and (t1.tb03<= @end_date or @end_date='') and tc11='N'

group by tc04

insert @t_level select ib01,ib03,@level,ib04*num from bomib t1

inner join @t t2 on t1.ib01=t2.itemcode

while @@rowcount>0

begin

set @level=@level+1

insert @t_level select t1.ib01,t1.ib03,@level,t1.ib04*t2.qty from bomib t1

inner join @t_level t2 on t1.ib01=t2.child_itemcode

where t2.level=@level-1

end

insert @temp1 select child_itemcode as itemid,t2.ma02 as itemname,t2.ma03 as standards,t2.ma05 as unit,sum(qty) as qty from @t_level t1

join invma t2 on t1.child_itemcode = t2.ma01

group by child_itemcode,t2.ma02,t2.ma03,t2.ma05

insert @temp2 select mb01 as itemid,sum(mb04) as store_num from invmb group by mb01

insert @temp3 select me04 as itemid,sum(me07) as notGetQty from mocme

where me10='N' and isnull(rtrim(me11),'')<>'' and dbo.changeDXDate(me11)>DATEADD(mm,-4,getdate()) and me01 in ('631','633','651','652')

group by me04

insert @temp4 select tb04 as itemid,sum(isnull(tb06,0))-sum(isnull(tb07,0)) as notReachQty from purtb

where tb14='N' and isnull(rtrim(tb13),'')<>'' and dbo.changeDXDate(tb13)>DATEADD(mm,-4,getdate())

group by tb04

select a.*,b.storeQty,isnull(c.notGetQty,0)as notGetQty,isnull(d.notReachQty,0) as notReachQty

from @temp1 a

left join @temp2 b on a.itemid=b.itemid

left join @temp3 c on a.itemid=c.itemid

left join @temp4 d on a.itemid=d.itemid

--未出貨訂單

union all

select '----------------','------------------','------------------','-------------------',null,null,null,null

union all

select '單別','單號','訂單日期','品號',null,null,null,null

union all

select t1.tb01,t1.tb02,t1.tb03,tc04 as itemcode,sum(isnull(tc06,0))-sum(isnull(tc07,0)) as num,null,null,null from coptb t1

left join coptc t2 on t1.tb01+t1.tb02=t2.tc01+t2.tc02

where t1.tb03 >= @start_date and t1.tb03<'1000000' and (t1.tb03<= @end_date or @end_date='') and tc11='N'

group by t1.tb01,t1.tb02,t1.tb03,t2.tc04
内容概要:本研究针对微电网在遭受拒绝服务(DoS)攻击时面临的功率分配不均与电能质量问题,提出了一种兼顾功率精确均分与电压频率质量恢复的抗攻击混合动态事件触发二次控制策略。该策略通过设计新型混合动态事件触发机制,有效减少控制器与分布式单元间的网络通信负担,同时增强系统对DoS攻击的鲁棒性。研究构建了完整的微电网二次控制框架,整合了分布式协同控制算法与事件触发通信机制,在保证系统稳定性的同时,实现了对频率、电压偏差的快速调节和有功/无功功率的精确分配。通过Simulink平台进行仿真实验,验证了所提方法在遭受DoS攻击及正常运行工况下均能有效维持微电网的稳定运行与高质量电能输出。; 适合人群:具备电力系统自动化、分布式控制或微电网相关基础知识,从事新能源、智能电网领域研究的研发人员及高年级研究生。; 使用场景及目标:① 解决微电网在通信受限及网络攻击场景下的协同控制难题;② 实现微电网在异常工况下功率均分与电能质量的双重优化;③ 为设计高安全性、高可靠性的智能微电网控制系统提供理论依据与仿真验证方案。; 阅读建议:本资源侧重于控制策略的设计与仿真验证,建议读者结合微电网基础理论与Simulink仿真技术,深入理解事件触发机制与抗DoS攻击控制算法的实现细节,并动手复现仿真案例以加深对系统动态性能与鲁棒性的认识。
内容概要:本文围绕《【太阳能学报EI复现】基于粒子群优化算法的风-水电联合优化运行分析(Matlab代码实现)》展开,系统阐述了采用粒子群优化算法(PSO)对风能与水力发电系统进行联合优化调度的研究方法与技术路径。研究聚焦于构建多能源互补协调的优化模型,详细论述了目标函数的设计、系统约束条件的处理、算法求解流程及收敛性分析,并通过Matlab编程实现了完整的仿真验证过程,有效提升了可再生能源系统的运行效率与稳定性。该工作属于电力系统智能优化领域,强调对高水平期刊论文的高精度复现,兼具理论深度与工程实用性,适用于科研复现、学术研究与教学参考。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源优化调度、智能算法应用的工程技术人员。; 使用场景及目标:①用于复现《太阳能学报》等高水平期刊中关于风-水电联合调度的EI/SCI论文;②掌握粒子群算法在多源协同优化中的建模、编码与求解关键技术;③辅助完成学位论文、科研项目申报或学术竞赛中的仿真建模任务; 阅读建议:建议结合文中提供的网盘资源下载完整代码与文档资料,按照目录结构循序渐进学习,重点关注算法实现细节、电力系统建模逻辑与参数设置方法,同时可延伸学习灰狼优化算法、YALMIP工具包等先进优化技术,以全面提升科研仿真与创新能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值