📄 procgetcomputermoneybiao.sql
字号:
Alter proc procGetComputerMoneyBiao
@XiaoQuName varchar(20),
@DongHao varchar(10),
@ShiHao varchar(10),
@Ellect varchar(20) output
As
Declare @intCountA int
Declare @price float
Declare @LeiChen int,@a int,@b int
Declare @JiaGe float
Declare @strFangXing varchar(20)
Declare @MianJi float,@MianJiYu float
-----------------------------------
Declare @BiaoDaShi varchar(2000)
Declare @BiaoDaShiOne varchar(2000),@XiangMu varchar(20),@BiaoDaShiTwo varchar(100)
Declare @intB int,@bLong int,@cLong int
Declare @DanWei varchar(20),@MoneyBiaoJuen float,@MoneyMi int
Declare @CountNum int --记录的个数
Declare curFbwt cursor for --定义一个游标
Select 计算表达式,计算项目 from ComputerProject where 小区名称=@XiaoQuName
Declare @XiangMuName varchar(20) --项目名称
Select @a=count(*) from ShiHao where 小区名称=@XiaoQuName and 幢号=@DongHao and 室号=@ShiHao
if @a=0 --表明没有这个记录
Select @Ellect='没有这个室号!'
if @a<>0
Begin
--计算基价
Select @LeiChen=楼层,@strFangXing=房型 from ShiHao where 小区名称=@XiaoQuName and 幢号=@DongHao and 室号=@ShiHao
--得到了楼的价格
--print '1 '+ @strFangXing
--print '2 '+ @LeiChen
Select @JiaGe=价格 from LeiJia where 小区名称=@XiaoQuName and 楼层=@LeiChen
--得到面积
--print '3 '+ @JiaGe
Select @MianJi=实测总计面积,@MianJiYu=预测总计面积 from FangXing where 房型编号=@strFangXing
--print '4 '+ @MianJiYu
--print '5 '+ @MianJi
if @MianJi<1.0 --表明没有实测总计面积
--采用预测总计面积
Begin
if @MianJiYu<1.0 --也没有预测总计面积 出错!
Select @Ellect='面积没有输入!'
if @MianJiYu>1.0 --用预测总计面积计算
select @price=@JiaGe * @MianJiYu
End
if @MianJI>1.0 --表明有实测总计面积
--采用实测总计面积计算
Begin
Select @price=@JiaGe * @MianJi
End
--基价加入MoneyList表中(费用列表)
Delete from MoneyList where 小区名称=@XiaoQuName and 幢号=@DongHao and 室号=@ShiHao
--查找是否已有当前项目的价格
Select @b=count(*) from MoneyList where 小区名称=@XiaoQuName and 幢号=@DongHao and 室号=@ShiHao and 项目名称='基价'
if @b=0 --表明没有当前项目价格
--加入新的
Begin
Insert into MoneyList(小区名称,幢号,室号,项目名称,金额) values(@XiaoQuName,@DongHao,@ShiHao,'基价',@price)
End
if @b<>0 --表明已有
Update MoneyList set 金额=@price where 小区名称=@XiaoQuName and 幢号=@DongHao and 室号=@SHiHao and 项目名称='基价'
--得到了基价
--清0
Select @price=0
----------------------------------------------------------------------------------
--从这儿开始得到别的费用项目
--得到表达式
Select @CountNum=count(*) from ComputerProject where 小区名称=@XiaoQuName
Open curFbwt --打开游标
while @CountNum<>0
Begin
fetch next from curFbwt into @BiaoDaShi,@XiangMuName
while @@fetch_status=-1
break
select @CountNum=@CountNum-1
-- print @CountNum
--处理数据
--可能有好几个记录,下面的只能处理一条记录
Select @cLong=len(@BiaoDaShi)
Select @BiaoDaShiOne=reverse(@BiaoDaShi)
Select @BiaoDaShiOne=rtrim(@BiaoDaShiOne)
Select @BiaoDaShiOne=ltrim(@BiaoDaShiOne)
Select @bLong=charindex('+',@BiaoDaShiOne)
Select @bLong=@bLong-1
while @cLong<>@bLong
Begin
--print '------------'
Select @BiaoDaShi=rtrim(@BiaoDaShi)
Select @BiaoDaShi=ltrim(@BiaoDaShi)
Select @cLong=len(@BiaoDaShi)
Select @intB=charindex('+',@BiaoDaShi)
Select @BiaoDaShiTwo=@BiaoDaShi
Select @BiaoDaShi=right(@BiaoDaShi,@cLong-@intB)
Select @intB=@intB-1
if @bLong=@cLong --表明是最后一个项目
Begin
--处理最后一项的MONEY
Select @MoneyBiaoJuen=收费标准,@DanWei=单位 from GetMoneyProject where 小区名称=@XiaoQuName and 项目名称=@BiaoDaShiTwo
--print '6 '+ @BiaoDaShiTwo
Goto fbwtComputerMoney
End
--处理前几项
Select @XiangMu=left(@BiaoDaShiTwo,@intB)
--Select @intCountA=count(*) from GetMoneyProject where 小区名称=@XiaoQuName and 项目名称=@XiangMu
--if @intCountA=0 --表明收费项目设置中没有这一项,可能是因为删除引起的
--在当前操作表中删除这一项
--Begin
--Delete from MoneyList where 小区名称=@XiaoQuName and 幢号=@DongHao and 室号=@ShiHao and 项目名称=@XiangMu
--Continue
--End
Select @MoneyBiaoJuen=收费标准,@DanWei=单位 from GetMoneyProject where 小区名称=@XiaoQuName and 项目名称=@XiangMu
--print '7 '+ @XiangMu
fbwtComputerMoney:
if @MianJi<1 --表明没有实测总计面积
--采用预测总计面积
Begin
select @MoneyMi=0
Select @MoneyMi=charindex('M',@DanWei)
if @MoneyMi<>0 --表明有面积的加入计算
select @price=@MianJiYu * @MoneyBiaoJuen
End
if @MianJI>1 --表明有实测总计面积
--采用实测总计面积计算
Begin
select @MoneyMi=0
Select @MoneyMi=charindex('M',@DanWei)
if @MoneyMi<>0 --表明有面积的加入计算
select @price=@MianJi * @MoneyBiaoJuen+@price
if @MoneyMi=0--表明没有面积的加入计算
select @price=@MOneyBiaoJuen+@price
--print @DanWei
--print '??????'
--print @MoneyMi
--print '>>>>>>>>>>>>>>>>>>>>>'
--print @MianJI
--print '!!!!!!!!!!'
--print @MoneyBiaoJuen
--print '<<<<<<<<<<<<<<<<<<<<'
--print @price
End
--print '8 '+ @price
End
---------------------加入到MoneyList表中, 要用到项目名称
Select @b=count(*) from MoneyList where 小区名称=@XiaoQuName and 幢号=@DongHao and 室号=@ShiHao and 项目名称=@XiangMuName
if @b=0 --表明没有当前项目价格
--加入新的
Begin
Insert into MoneyList(小区名称,幢号,室号,项目名称,金额) values(@XiaoQuName,@DongHao,@ShiHao,@XiangMuName,@price)
End
if @b<>0 --表明已有
Update MoneyList set 金额=@price where 小区名称=@XiaoQuName and 幢号=@DongHao and 室号=@SHiHao and 项目名称=@XiangMuName
--print '9 '+@XiangMuName
Select @price=0
End
Deallocate curFbwt --放游标
Select @price=0
Select @price=sum(金额) from MoneyList where 小区名称=@XiaoQuName and 幢号=@DongHao and 室号=@ShiHao
Select @b=count(*) from MoneyList where 小区名称=@XiaoQuName and 幢号=@DongHao and 室号=@ShiHao and 项目名称='总价'
if @b=0 --表明没有当前项目价格
--加入新的
Begin
Insert into MoneyList(小区名称,幢号,室号,项目名称,金额) values(@XiaoQuName,@DongHao,@ShiHao,'总价',@price)
End
if @b<>0 --表明已有
Update MoneyList set 金额=@price where 小区名称=@XiaoQuName and 幢号=@DongHao and 室号=@SHiHao and 项目名称=@XiangMuName
--print '9 '+@XiangMuName
select @Ellect='成功'
End
Go
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -