仓酷云

标题: MSSQL编程:前段工夫写的一个关于本钱盘算的存储过... [打印本页]

作者: 爱飞    时间: 2015-1-16 22:34
标题: MSSQL编程:前段工夫写的一个关于本钱盘算的存储过...
你看出了作者的深度?深处半米!当初是冲那么多的大牛给他写序才买的,后来才发现无啥内容,作者也只是才用几年的新手,百花了几十两银子,再次感叹当今社会的虚伪与浮躁存储历程
--|///
----//
--(@@)
--┏━━━━━━━━━oOOo-(_)-oOOo━┓
--┃界说于2004-07-16┃
--┃本钱试算存储历程界说,盘算本钱┃
--┃Oooo┃
--┗━━━━━━━━━oooO━-()━┛
--())/
--((_/
--\_)
CREATEPROCEDUREsp_costing_compute
(@out_matnrvarchar(18),
@out_werksvarchar(4),
@out_datetimedatetime)
AS
--拔出赠品
declare@matnrvarchar(18),@werksvarchar(4),@kriqidatetime,@meinsvarchar(10)
declare@bomatnrvarchar(18),@bomsehlvarchar(10),@mengefloat
declare@pricefloat,@danwvarchar(20)
declare@umrezfloat,@aapricefloat,@jjpricefloat,@aratefloat,@jratefloat,@asyfloat,@jsyfloat
declare@cpjgfloat,@umrenfloat
set@cpjg=0
--盘算产制品本钱代价
Declaremycursorcursorforselectmeins,aprice,jpricefromtb_matnrwhereconvert(varchar(10),kriqi,120)=convert(varchar(10),@out_datetime,120)andmatnr=@out_matnrandplant=@out_werks
openmycursor
fetchmycursorinto@meins,@aaprice,@jjprice
closemycursor
deallocatemycursor
declarebccursorcursorforselectbomatnr,bomsehl,mengefromtb_bomwherecpmatnr=@out_matnrandwerks=@out_werksandconvert(varchar(10),kriqi,120)=convert(varchar(10),@out_datetime,120)
openbccursor
fetchbccursorinto@bomatnr,@bomsehl,@menge
while@@fetch_status=0
begin
declarejgcursorcursorforselectprice,meinsfromtb_bcjgwherematnr=@bomatnrandplant=@out_werksandconvert(varchar(10),kriqi,120)=convert(varchar(10),@out_datetime,120)
openjgcursor
fetchjgcursorinto@price,@danw
closejgcursor
deallocatejgcursor
if@price=0
begin
updatetb_matnrsetmstatus=置疑wherematnr=@out_matnrandplant=@out_werksandconvert(varchar(10),kriqi,120)=convert(varchar(10),@out_datetime,120)
break
end
--假如代价单元和bom单元分歧,必要举行转换
if@bomsehl@danw
begin
declarezhgxcursorcursorforselectumrezfromtb_switchwherematnr=@bomatnrandmsehl=@danw
openzhgxcursor
fetchzhgxcursorinto@umrez
closezhgxcursor
deallocatezhgxcursor
end
if@umrezisnull
set@umrez=1
set@cpjg=@cpjg+@menge*@price/@umrez
fetchnextfrombccursorinto@bomatnr,@bomsehl,@menge
end
closebccursor
deallocatebccursor
--检察bom制品单元与制品发卖单元,假如分歧增加转换干系
declarecpzhcursorcursorforselectumrenfromtb_switchwherematnr=@out_matnrandmsehl=@meins
opencpzhcursor
fetchcpzhcursorinto@umren
closecpzhcursor
deallocatecpzhcursor
if@umrenisnull
set@umren=1
if@cpjg0
set@cpjg=@cpjg/@umren
ifnot@aapriceisnull
begin
set@arate=@aaprice-@cpjg
if@aaprice0
set@asy=@arate/@aaprice
end
else
begin
set@arate=0
set@asy=0
end
ifnot@jjpriceisnull
begin
set@jrate=@jjprice-@cpjg
if@jjprice0
set@jsy=@jrate/@jjprice
end
else
begin
set@jrate=0
set@jsy=0
end

updatetb_matnrsetcbprice=@cpjg,apeyoff=@arate,jpayoff=@jrate,arate=@asy,jrate=@jsywherematnr=@out_matnrandplant=@out_werksandconvert(varchar(10),kriqi,120)=convert(varchar(10),@out_datetime,120)
GO

线上或者测试环境经常出现的误操作总是让DBA同学那么闹心。
作者: 小女巫    时间: 2015-1-19 17:26
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
作者: 仓酷云    时间: 2015-1-28 09:09
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
作者: admin    时间: 2015-2-5 20:19
对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。
作者: 再见西城    时间: 2015-2-13 12:43
比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。
作者: 只想知道    时间: 2015-3-3 21:18
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
作者: 兰色精灵    时间: 2015-3-11 13:51
我们学到了什么?思考问题的时候从表的角度来思考问
作者: 小魔女    时间: 2015-3-18 21:30
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
作者: 愤怒的大鸟    时间: 2015-3-26 19:11
你可以简单地认为适合的就是好,不适合就是不好。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2