导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

求一存储过程,单表(4个字段),救急.在线急等.

dljinsui 2007-12-07 01:21:23


表A

字段:
客户编码:CustID (字符) [主键]
商品编码:ProID (字符) [主键]
销售日期:saleDate(日期) [主键]
重量: saleTotalweight(decimal,4位小数)


求一存储过程

传入该字段四个参数,
参数顺序为字段顺序(custID,ProID,saleDate,saleTotalweight)

返回值:
累加后的重量

要求:
1.如已存在该条纪录,重量累加:
select saleTotalweight from A where CustID=@CustID and proID=@proID and saleDate = @saleDate

if exist() -> 原有重量+传入重量
if 没有前三个字段(主键)对应纪录,则insert()一条。
insert()时注意,如果是负数,重量为零,正数为传入值。

2.传入的重量可能为负数(冲减)
也是传入重量与原有重量累加,如累加值为负,由update这纪录的重量为零。


...全文
47 点赞 收藏 2
写回复
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2007-12-07
if exists(select 1 from A where CustID=@CustID and proID=@proID and saleDate = @saleDate )
update a
set saleTotalweight=saleTotalweight+@saleTotalweight
where CustID=@CustID and proID=@proID and saleDate = @saleDate
else
insert a values(@CustID,@proID,@saleDate,@saleTotalweight)
回复
-狙击手- 2007-12-07
create proc procname
@custid varchar(10),
@proid varchar(10),
@saledate datetime,
@saletotalweight decimal(12,4),
@ret decimal(12,4) output
as
declare @old decimal(12,4)
select @old = saleTotalweight from A where CustID=@CustID and proID=@proID and saleDate = @saleDate
if @@rowcount > 1
begin
set @ret = @old + @saletotalweight
if @ret < 0
update a set saleTotalweight = 0
where CustID=@CustID and proID=@proID and saleDate = @saleDate
end
else
insert a select @custid ,@proid ,@saledate,case when @saletotalweight > 0 then @saletotalweight else 0 end



go
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告