?? 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 + -