求一存储过程,单表(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这纪录的重量为零。


...全文
70 2 打赏 收藏 举报
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
中国风 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

3.4w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2007-12-07 01:21
社区公告
暂无公告