请大家帮忙,100分求存储过程!马上结贴(100)急~~~~~~~~~~

esimer 2004-04-13 04:25:00
我有3个表
库存表:
商品ID,库存量,商品单价,库存金额
出货单:
单号,商品ID,出货数量,出货金额,是否盘点
入货单:
单号,商品ID,入货数量,入货金额,是否盘点

现在需要做一个“盘点”的存储过程,将入货单,出货单上未盘点的商品盘点,再把“是否盘点”标记为以盘点。

分不够可以另外开贴加。
...全文
29 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
martmy 2004-04-17
  • 打赏
  • 举报
回复
m
esimer 2004-04-13
  • 打赏
  • 举报
回复
感谢大家这么热心的帮助我,问题解决了。
谢谢,谢谢。
progress99 2004-04-13
  • 打赏
  • 举报
回复
但是ISNULL(B.入货数量,0)是什么东东?
就是后面那个0???

表:當B.入货数量為NULL值時,表達式返回0,在做數值型數據運算處理時,一般要進行NULL值處理,舉例:

declare @a int
declare @b int
set @a=100
select @a+@b --返回NULL
select @a+isnull(@b,0) --返回100
select @a+isnull(@b,100) --返回200
progress99 2004-04-13
  • 打赏
  • 举报
回复
--使用事務:

SET XACT_ABORT ON --出錯就回滾
begin tran

DECLARE @a numeric(12)
DECLARE @b numeric(12)

--入货盘点
UPDATE A
SET A.库存量=ISNULL(A.库存量,0)+ISNULL(B.入货数量,0)
from 库存表 A
inner join 入货单 B on B.商品ID=A.商品ID
WHERE B.是否盘点='N' --表未盘点


--更換標志
UPDATE B
SET B.是否盘点='Y'
from 库存表 A
inner join 入货单 B on B.商品ID=A.商品ID
WHERE B.是否盘点='N' --表未盘点

set @a=@@ROWCOUNT --返回更改記錄數


--出货盘点
UPDATE A
SET A.库存量=ISNULL(A.库存量,0)-ISNULL(C.出货数量,0)
from 库存表 A
inner join 出货单 C on C.商品ID=A.商品ID
WHERE C.是否盘点='N' --表未盘点

UPDATE C
SET C.是否盘点='Y'
from 库存表 A
inner join 出货单 C on C.商品ID=A.商品ID
WHERE C.是否盘点='N' --表未盘点

set @b= @@ROWCOUNT --返回更改記錄數

--返回入货单和出货单更改的记录条数
select @a,@b
COMMIT
netcoder 2004-04-13
  • 打赏
  • 举报
回复
给你个比较好理解的

create procedure 盘点
as
begin tran
declare @id int,@temp int
declare csr1 cursor
for
select 商品ID from 库存表
open csr1

FETCH NEXT FROM csr1 INTO @id
while (@@FETCH_STATUS=0)
BEGIN
select @temp=isnull(sum(出货数量),0) from 出货单 where 商品ID =@id
update 库存表 set 库存量=库存量-@temp where 商品ID=@id
update 出货单 set 是否盘点=1

select @temp=isnull(sum(入货数量),0) from 入货单 where 商品ID =@id
update 库存表 set 库存量=库存量+@temp where 商品ID=@id
update 入货单 set 是否盘点=1

fetch next from csr1 into @id
END
CLOSE csr1
DEALLOCATE csr1
commit
esimer 2004-04-13
  • 打赏
  • 举报
回复
请问
progress99(如履薄冰)
库存量:

UPDATE A
SET A.库存量=ISNULL(A.库存量,0)+ISNULL(B.入货数量,0)-ISNULL(C.出货数量,0)

from 库存表 A
left join 入货单 B on B.商品ID=A.商品ID //联合表
left join 出货单 C on C.商品ID=A.商品ID //联合表

但是ISNULL(B.入货数量,0)是什么东东?
就是后面那个0???
progress99 2004-04-13
  • 打赏
  • 举报
回复
使用事務:
begin tran

--入货盘点
UPDATE A
SET A.库存量=ISNULL(A.库存量,0)+ISNULL(B.入货数量,0)
from 库存表 A
inner join 入货单 B on B.商品ID=A.商品ID
WHERE B.是否盘点='N' --表未盘点

--更換標志
UPDATE B
SET B.是否盘点='Y'
from 库存表 A
inner join 入货单 B on B.商品ID=A.商品ID
WHERE B.是否盘点='N' --表未盘点

SELECT @@ROWCOUNT --返回更改記錄數


--出货盘点
UPDATE A
SET A.库存量=ISNULL(A.库存量,0)-ISNULL(C.出货数量,0)
from 库存表 A
inner join 出货单 C on C.商品ID=A.商品ID
WHERE C.是否盘点='N' --表未盘点

UPDATE C
SET C.是否盘点='Y'
from 库存表 A
inner join 出货单 C on C.商品ID=A.商品ID
WHERE C.是否盘点='N' --表未盘点

SELECT @@ROWCOUNT --返回更改記錄數
COMMIT
progress99 2004-04-13
  • 打赏
  • 举报
回复
库存量:

UPDATE A
SET A.库存量=ISNULL(A.库存量,0)+ISNULL(B.入货数量,0)-ISNULL(C.出货数量,0)

from 库存表 A
left join 入货单 B on B.商品ID=A.商品ID
left join 出货单 C on C.商品ID=A.商品ID
esimer 2004-04-13
  • 打赏
  • 举报
回复

请问
weixiao51(三土)

AA和BB是什么东东??
weixiao51 2004-04-13
  • 打赏
  • 举报
回复
库存表:Z
商品ID,库存量,商品单价,库存金额
ID CO PRICE AMOUNT
出货单:A
单号,商品ID,出货数量,出货金额,是否盘点
NO ID CO PRICE IS
入货单:B
单号,商品ID,入货数量,入货金额,是否盘点
NO ID CO PRICE IS

UPDATE Z SET Z.CO = Z.CO - AA.CO
, Z.AMOUNT = Z.AMOUNT - Z.PRICE * AA.CO
FROM (SELECT SUM(CO) AS CO FROM A GROUP BY ID) AA
WHERE Z.ID = AA.ID

UPDATE A SET A.IS = '1' WHERE A.IS = '0'

UPDATE Z SET Z.CO = Z.CO + BB.CO
, Z.PRICE = ( Z.AMOUNT + BB.PRICE * BB.CO ) / ( Z.CO + BB.CO)
, Z.AMOUNT = Z.AMOUNT + BB.PRICE * BB.CO
FROM (SELECT SUM(CO) AS CO FROM B GROUP BY ID) BB
WHERE Z.ID = BB.ID

UPDATE B SET B.IS = '1' WHERE B.IS = '0'
esimer 2004-04-13
  • 打赏
  • 举报
回复
盘点的依据是我在前台调用的,当我的前台事件触发的时候调用这个存储过程!
esimer 2004-04-13
  • 打赏
  • 举报
回复
出货单、入货单的单价无所谓,我可以再写一条语句在商品表里算出来的。

盘点的动作就是

库存表.库存量=库存表.库存量+入货单.入货数量 where 库存表.商品ID=入货单.商品ID

库存表.库存量=库存表.库存量-出货单.出货数量 where 库存表.商品ID=出货单.商品ID

入货单.是否盘点=已盘点(此字段为bit型)

出货单.是否盘点=已盘点

最好能够返回入货单和出货单的记录条数。
netcoder 2004-04-13
  • 打赏
  • 举报
回复
盘点的依据是什么,
即符合什么条件就可以盘点?
CCEO 2004-04-13
  • 打赏
  • 举报
回复
你要什么算法?
出货单、入货单没有单价,单价怎么记录

说清楚先

DigJim 2004-04-13
  • 打赏
  • 举报
回复
盤點的動作是什麽?

你問的問題太不全了!

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧