1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| USE [lod]
GO
/****** Objet*: StoredProcedure [dbo].[LIG_CptStck] Date de génération du script*: 01/02/2009 10:51:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Laurent ODIE>
-- Create date: <31/12/2008>
-- Description: <>
-- =============================================
ALTER PROCEDURE [dbo].[LIG_CptStck]
@DatCde datetime
AS
BEGIN
CREATE TABLE ##mvts_stock
(mvtorg CHAR(1),
mvttyp CHAR(10),
exeexe CHAR(4),
mvtdat DATETIME,
mvtnum INTEGER,
frnnumser CHAR(6),
frncod CHAR(6),
ufocod CHAR(4),
prdcod CHAR(7),
prdges CHAR(1),
mvtqte DECIMAL(12,3),
mvtpht DECIMAL(12,4),
mvtptc DECIMAL(12,4),
mvtmnt DECIMAL(12,2),
ctolbu CHAR(2),
ctonum CHAR(9),
mvtqsi DECIMAL(12,2),
mvtvsi DECIMAL(12,2)
);
--variable qui récupérera les données de la requête de sélection
DECLARE @mvtorg CHAR(1), @exeexe CHAR(4), @cdenum INTEGER, @frnnumser CHAR(6), @frncod CHAR(6),
@ufocod CHAR(4), @prdcod CHAR(7), @prdges CHAR(1), @mvtpht DECIMAL(12,4), @mvtptc DECIMAL(12,4),
@ctolbu CHAR(2), @ctonum CHAR(9), @cdedat DATETIME,@mvtqsi DECIMAL(12,2), @mvtvsi DECIMAL(12,2)
-- Cette variable sera toujours égal à 'C'
SET @mvtorg = 'C'
--Déclaration de mon curseur
DECLARE MyCursor CURSOR
FOR
SELECT cde.exeexe,cde.cdenum,frn.frnnumser,cde.frncod,cde.cdedat,
cdl.cdlcod as prdcod,prd.prdges, cdl.cdlpht,cdl.cdlptc,
cdl.ufocod, cdl.ctolbu, cdl.ctonum, imb.imbqsi, imb.imbvsi
FROM dpcdl cdl, dpcde cde, fcprd prd, fcimb imb, fcfrn frn
WHERE year(cde.cdedat) = @DatCde
AND cde.cdedat <= @DatCde
AND cde.cdenumser = cdl.cdenumser AND cdl.cdltyp = 'P'
AND cdl.cdleta <> 'R' AND cdl.cdleta <> 'S'
AND cdl.cdlcodser = prd.prdnumser AND prd.prdnumser = imb.prdnumser
AND cde.exeexe = imb.exeexe AND cde.frncod = frn.frncod
OPEN MyCursor -- j'initialise mon curseur
-- je le rempli avec mon 1er enregistrement retourné par la requête
FETCH NEXT FROM MyCursor INTO @exeexe, @cdenum, @frnnumser, @frncod, @cdedat, @prdcod,
@prdges, @mvtpht, @mvtptc, @ufocod, @ctolbu, @ctonum,
@mvtqsi, @mvtvsi
-- Tant que je n'ai pas traité tous les variables de la requête
WHILE @@fetch_Status = 0
BEGIN
print @exeexe + '-'
INSERT INTO ##mvts_stock
(mvtorg,exeexe,mvtnum,frnnumser,frncod,ufocod, prdcod,
prdges,mvtpht,mvtptc, ctolbu,ctonum,mvtdat,mvtqsi,mvtvsi)
values (@mvtorg,@exeexe, @cdenum, @frnnumser, @frncod, @ufocod, @prdcod,
@prdges, @mvtpht, @mvtptc, @ctolbu, @ctonum, @cdedat, @mvtqsi, @mvtvsi);
-- je le rempli avec les variables suivantes retourné par la requête
FETCH NEXT FROM MyCursor INTO @exeexe, @cdenum, @frnnumser, @frncod, @cdedat, @prdcod,
@prdges, @mvtpht, @mvtptc, @ufocod, @ctolbu, @ctonum,
@mvtqsi, @mvtvsi
END
CLOSE myCursor -- je ferme mon curseur
DEALLOCATE myCursor -- je libère la mémoire allouée à ce curseur
Select * from ##mvts_stock
end |
Partager