📄 proc_月结.sql
字号:
if exists(select name from sysobjects where name='proc_月结' AND TYPE='P' )
DROP PROC proc_月结
go
create proc proc_月结
@年 INT,
@月 INT
AS
INSERT INTO 明细库存表 ( 物料编码,物料描述,月初结存数量,月初材料成本,月初人工成本,月初制造费用 )SELECT 物料编码,物料描述,月末结存数量,月末材料成本,月末人工成本,月末制造费用
FROM 明细库存表 WHERE 年=@年 AND 月=@月
UPDATE 会计期间 SET 一期月结='1' WHERE YEAR(一期)=@年 AND MONTH(一期)=@月
UPDATE 会计期间 SET 一期月结='1' WHERE YEAR(一期)=@年 AND MONTH(一期)=@月
UPDATE 会计期间 SET 二期月结='1' WHERE YEAR(二期)=@年 AND MONTH(二期)=@月
UPDATE 会计期间 SET 三期月结='1' WHERE YEAR(三期)=@年 AND MONTH(三期)=@月
UPDATE 会计期间 SET 四期月结='1' WHERE YEAR(四期)=@年 AND MONTH(四期)=@月
UPDATE 会计期间 SET 五期月结='1' WHERE YEAR(五期)=@年 AND MONTH(五期)=@月
UPDATE 会计期间 SET 六期月结='1' WHERE YEAR(六期)=@年 AND MONTH(六期)=@月
UPDATE 会计期间 SET 七期月结='1' WHERE YEAR(七期)=@年 AND MONTH(七期)=@月
UPDATE 会计期间 SET 八期月结='1' WHERE YEAR(八期)=@年 AND MONTH(八期)=@月
UPDATE 会计期间 SET 九期月结='1' WHERE YEAR(九期)=@年 AND MONTH(九期)=@月
UPDATE 会计期间 SET 十期月结='1' WHERE YEAR(十期)=@年 AND MONTH(十期)=@月
UPDATE 会计期间 SET 十一期月结='1' WHERE YEAR(十一期)=@年 AND MONTH(十一期)=@月
UPDATE 会计期间 SET 十二期月结='1' WHERE YEAR(十二期)=@年 AND MONTH(十二期)=@月
BEGIN
DECLARE MON SCROLL CURSOR FOR
SELECT 二期,二期开始日期 FROM 会计期间
OPEN MON
DECLARE @二期 DATETIME,@二期开始日期 DATETIME
FETCH MON INTO @二期 , @二期开始日期
WHILE @@FETCH_STATUS=0
BEGIN
UPDATE 明细库存表 SET 年=YEAR(@二期开始日期),月=MONTH(@二期开始日期)
WHERE not exists (select 年,月 from 明细库存表 where 年=YEAR(@二期) AND 月=MONTH(@二期)) AND (年 IS NULL AND 月 IS NULL)
FETCH MON INTO @二期 , @二期开始日期
END
CLOSE MON
DEALLOCATE MON
END
DECLARE MON2 SCROLL CURSOR FOR
SELECT 三期, 三期开始日期 FROM 会计期间
OPEN MON2
DECLARE @三期 DATETIME, @三期开始日期 DATETIME
FETCH MON2 INTO @三期, @三期开始日期
WHILE @@FETCH_STATUS=0
BEGIN
UPDATE 明细库存表 SET 年=YEAR(@三期开始日期),月=MONTH(@三期开始日期)
WHERE not exists (select 年,月 from 明细库存表 where 年=YEAR(@三期) AND 月=MONTH(@三期)) AND (年 IS NULL AND 月 IS NULL)
FETCH MON2 INTO @三期, @三期开始日期
END
CLOSE MON2
DEALLOCATE MON2
DECLARE MON3 SCROLL CURSOR FOR
SELECT 四期, 四期开始日期 FROM 会计期间
OPEN MON3
DECLARE @四期 DATETIME, @四期开始日期 DATETIME
FETCH MON3 INTO @四期, @四期开始日期
WHILE @@FETCH_STATUS=0
BEGIN
UPDATE 明细库存表 SET 年=YEAR(@四期开始日期),月=MONTH(@四期开始日期)
WHERE not exists (select 年,月 from 明细库存表 where 年=YEAR(@四期) AND 月=MONTH(@四期)) AND (年 IS NULL AND 月 IS NULL)
FETCH MON3 INTO @四期, @四期开始日期
END
CLOSE MON3
DEALLOCATE MON3
DECLARE MON4 SCROLL CURSOR FOR
SELECT 五期, 五期开始日期 FROM 会计期间
OPEN MON4
DECLARE @五期 DATETIME, @五期开始日期 DATETIME
FETCH MON4 INTO @五期, @五期开始日期
WHILE @@FETCH_STATUS=0
BEGIN
UPDATE 明细库存表 SET 年=YEAR(@五期开始日期),月=MONTH(@五期开始日期)
WHERE not exists (select 年,月 from 明细库存表 where 年=YEAR(@五期) AND 月=MONTH(@五期)) AND (年 IS NULL AND 月 IS NULL)
FETCH MON4 INTO @五期, @五期开始日期
END
CLOSE MON4
DEALLOCATE MON4
DECLARE MON5 SCROLL CURSOR FOR
SELECT 六期, 六期开始日期 FROM 会计期间
OPEN MON5
DECLARE @六期 DATETIME, @六期开始日期 DATETIME
FETCH MON5 INTO @六期, @六期开始日期
WHILE @@FETCH_STATUS=0
BEGIN
UPDATE 明细库存表 SET 年=YEAR(@六期开始日期),月=MONTH(@六期开始日期)
WHERE not exists (select 年,月 from 明细库存表 where 年=YEAR(@六期) AND 月=MONTH(@六期)) AND (年 IS NULL AND 月 IS NULL)
FETCH MON5 INTO @六期, @六期开始日期
END
CLOSE MON5
DEALLOCATE MON5
DECLARE MON6 SCROLL CURSOR FOR
SELECT 七期, 七期开始日期 FROM 会计期间
OPEN MON6
DECLARE @七期 DATETIME, @七期开始日期 DATETIME
FETCH MON6 INTO @七期, @七期开始日期
WHILE @@FETCH_STATUS=0
BEGIN
UPDATE 明细库存表 SET 年=YEAR(@七期开始日期),月=MONTH(@七期开始日期)
WHERE not exists (select 年,月 from 明细库存表 where 年=YEAR(@七期) AND 月=MONTH(@七期)) AND (年 IS NULL AND 月 IS NULL)
FETCH MON6 INTO @七期, @七期开始日期
END
CLOSE MON6
DEALLOCATE MON6
DECLARE MON7 SCROLL CURSOR FOR
SELECT 八期, 八期开始日期 FROM 会计期间
OPEN MON7
DECLARE @八期 DATETIME, @八期开始日期 DATETIME
FETCH MON7 INTO @八期, @八期开始日期
WHILE @@FETCH_STATUS=0
BEGIN
UPDATE 明细库存表 SET 年=YEAR(@八期开始日期),月=MONTH(@八期开始日期)
WHERE not exists (select 年,月 from 明细库存表 where 年=YEAR(@八期) AND 月=MONTH(@八期)) AND (年 IS NULL AND 月 IS NULL)
FETCH MON7 INTO @八期, @八期开始日期
END
CLOSE MON7
DEALLOCATE MON7
DECLARE MON8 SCROLL CURSOR FOR
SELECT 九期, 九期开始日期 FROM 会计期间
OPEN MON8
DECLARE @九期 DATETIME, @九期开始日期 DATETIME
FETCH MON8 INTO @九期, @九期开始日期
WHILE @@FETCH_STATUS=0
BEGIN
UPDATE 明细库存表 SET 年=YEAR(@九期开始日期),月=MONTH(@九期开始日期)
WHERE not exists (select 年,月 from 明细库存表 where 年=YEAR(@九期) AND 月=MONTH(@九期)) AND (年 IS NULL AND 月 IS NULL)
FETCH MON8 INTO @九期, @九期开始日期
END
CLOSE MON8
DEALLOCATE MON8
DECLARE MON9 SCROLL CURSOR FOR
SELECT 十期, 十期开始日期 FROM 会计期间
OPEN MON9
DECLARE @十期 DATETIME, @十期开始日期 DATETIME
FETCH MON9 INTO @十期, @十期开始日期
WHILE @@FETCH_STATUS=0
BEGIN
UPDATE 明细库存表 SET 年=YEAR(@十期开始日期),月=MONTH(@十期开始日期)
WHERE not exists (select 年,月 from 明细库存表 where 年=YEAR(@十期) AND 月=MONTH(@十期)) AND (年 IS NULL AND 月 IS NULL)
FETCH MON9 INTO @十期, @十期开始日期
END
CLOSE MON9
DEALLOCATE MON9
DECLARE MON10 SCROLL CURSOR FOR
SELECT 十一期, 十一期开始日期 FROM 会计期间
OPEN MON10
DECLARE @十一期 DATETIME, @十一期开始日期 DATETIME
FETCH MON10 INTO @十一期, @十一期开始日期
WHILE @@FETCH_STATUS=0
BEGIN
UPDATE 明细库存表 SET 年=YEAR(@十一期开始日期),月=MONTH(@十一期开始日期)
WHERE not exists (select 年,月 from 明细库存表 where 年=YEAR(@十一期) AND 月=MONTH(@十一期)) AND (年 IS NULL AND 月 IS NULL)
FETCH MON10 INTO @十一期, @十一期开始日期
END
CLOSE MON10
DEALLOCATE MON10
DECLARE MON11 SCROLL CURSOR FOR
SELECT 十二期, 十二期开始日期 FROM 会计期间
OPEN MON11
DECLARE @十二期 DATETIME, @十二期开始日期 DATETIME
FETCH MON11 INTO @十二期, @十二期开始日期
WHILE @@FETCH_STATUS=0
BEGIN
UPDATE 明细库存表 SET 年=YEAR(@十二期开始日期),月=MONTH(@十二期开始日期)
WHERE not exists (select 年,月 from 明细库存表 where 年=YEAR(@十二期) AND 月=MONTH(@十二期)) AND (年 IS NULL AND 月 IS NULL)
FETCH MON11 INTO @十二期, @十二期开始日期
END
CLOSE MON11
DEALLOCATE MON11
DECLARE MON12 SCROLL CURSOR FOR
SELECT 一期, 一期开始日期 FROM 会计期间
OPEN MON12
DECLARE @一期 DATETIME, @一期开始日期 DATETIME
FETCH MON12 INTO @一期, @一期开始日期
WHILE @@FETCH_STATUS=0
BEGIN
UPDATE 明细库存表 SET 年=1+YEAR(@一期开始日期),月=MONTH(@一期开始日期)
WHERE not exists (select 年,月 from 明细库存表 where 年=1+YEAR(@一期) AND 月=MONTH(@一期)) AND (年 IS NULL AND 月 IS NULL)
FETCH MON12 INTO @一期, @一期开始日期
END
CLOSE MON12
DEALLOCATE MON12
SELECT * FROM 明细库存表
-- EXEC proc_月结 2005,6
go
if exists(select name from sysobjects where name='proc_月结检查' AND TYPE='P' )
DROP PROC proc_月结检查
go
create proc proc_月结检查
@日期 DATETIME
AS
DECLARE @一期月结 CHAR(1),@二期月结 CHAR(1),@三期月结 CHAR(1),
@四期月结 CHAR(1), @五期月结 CHAR(1),@六期月结 CHAR(1)
DECLARE @七期月结 CHAR(1),@八期月结 CHAR(1),@九期月结 CHAR(1),
@十期月结 CHAR(1), @十一期月结 CHAR(1),@十二期月结 CHAR(1)
SELECT @一期月结=一期月结,@二期月结=二期月结,@三期月结=三期月结,@四期月结=四期月结,@五期月结=五期月结,@六期月结=六期月结,@七期月结=七期月结,@八期月结=八期月结,
@九期月结=九期月结,@十期月结=十期月结,@十一期月结=十一期月结,@十二期月结=十二期月结
FROM 会计期间
BEGIN
IF EXISTS(SELECT * FROM 会计期间 WHERE 一期开始日期<=@日期 AND 一期结束日期>=@日期 AND @一期月结=0)
RETURN 0/*返回一个成功值,即在未进行月结时,可以继续进行这个月的业务处理,如增加/修改*/
ELSE
RETURN 1/*返回一个失败值,即在已进行月结后,不可以继续进行这个月的业务处理,如增加/修改*/
END
BEGIN
IF EXISTS(SELECT * FROM 会计期间 WHERE 二期开始日期<=@日期 AND 二期结束日期>=@日期 AND @二期月结=0)
RETURN 0
ELSE
RETURN 1
END
BEGIN
IF EXISTS(SELECT * FROM 会计期间 WHERE 三期开始日期<=@日期 AND 三期结束日期>=@日期 AND @三期月结=0)
RETURN 0
ELSE
RETURN 1
END
BEGIN
IF EXISTS(SELECT * FROM 会计期间 WHERE 四期开始日期<=@日期 AND 四期结束日期>=@日期 AND @四期月结=0)
RETURN 0
ELSE
RETURN 1
END
BEGIN
IF EXISTS(SELECT * FROM 会计期间 WHERE 五期开始日期<=@日期 AND 五期结束日期>=@日期 AND @五期月结=0)
RETURN 0
ELSE
RETURN 1
END
BEGIN
IF EXISTS(SELECT * FROM 会计期间 WHERE 六期开始日期<=@日期 AND 六期结束日期>=@日期 AND @六期月结=0)
RETURN 0
ELSE
RETURN 1
END
BEGIN
IF EXISTS(SELECT * FROM 会计期间 WHERE 七期开始日期<=@日期 AND 七期结束日期>=@日期 AND @七期月结=0)
RETURN 0
ELSE
RETURN 1
END
BEGIN
IF EXISTS(SELECT * FROM 会计期间 WHERE 八期开始日期<=@日期 AND 八期结束日期>=@日期 AND @八期月结=0)
RETURN 0
ELSE
RETURN 1
END
BEGIN
IF EXISTS(SELECT * FROM 会计期间 WHERE 九期开始日期<=@日期 AND 九期结束日期>=@日期 AND @九期月结=0)
RETURN 0
ELSE
RETURN 1
END
BEGIN
IF EXISTS(SELECT * FROM 会计期间 WHERE 十期开始日期<=@日期 AND 十期结束日期>=@日期 AND @十期月结=0)
RETURN 0
ELSE
RETURN 1
END
BEGIN
IF EXISTS(SELECT * FROM 会计期间 WHERE 十一期开始日期<=@日期 AND 十一期结束日期>=@日期 AND @十一期月结=0)
RETURN 0
ELSE
RETURN 1
END
BEGIN
IF EXISTS(SELECT * FROM 会计期间 WHERE 十二期开始日期<=@日期 AND 十二期结束日期>=@日期 AND @十二期月结=0)
RETURN 0
ELSE
RETURN 1
END
--select *from 会计期间
-- exec proc_月结检查 '2004/01/28'
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -