仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1401|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL编程:前段工夫写的一个关于本钱盘算的存储过...

[复制链接]
爱飞 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:34:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你看出了作者的深度?深处半米!当初是冲那么多的大牛给他写序才买的,后来才发现无啥内容,作者也只是才用几年的新手,百花了几十两银子,再次感叹当今社会的虚伪与浮躁存储历程
--|///
----//
--(@@)
--┏━━━━━━━━━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:13 | 只看该作者
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
板凳
发表于 2015-1-28 09:09:12 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
admin 该用户已被删除
地板
发表于 2015-2-5 20:19:32 | 只看该作者
对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。
再见西城 该用户已被删除
5#
发表于 2015-2-13 12:43:03 | 只看该作者
比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。
只想知道 该用户已被删除
6#
发表于 2015-3-3 21:18:13 | 只看该作者
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
兰色精灵 该用户已被删除
7#
发表于 2015-3-11 13:51:26 | 只看该作者
我们学到了什么?思考问题的时候从表的角度来思考问
小魔女 该用户已被删除
8#
发表于 2015-3-18 21:30:58 | 只看该作者
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-26 19:11:25 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 19:23

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表