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 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
BEGIN TRANSACTION
CREATE TABLE [DIN] (
[Id] [bigint] NOT NULL ,
[DIN_Num] [varchar] (20) COLLATE French_CI_AS NOT NULL ,
[Zge_Id] [bigint] NULL,
[Ordre] [int] NOT NULL ,
CONSTRAINT [PK_DIN] PRIMARY KEY CLUSTERED
(
[Id]
) WITH FILLFACTOR = 90 ON [PRIMARY] ,
CONSTRAINT [FK_DIN_ZoneGeo] FOREIGN KEY
(
[Zge_Id]
) REFERENCES [ZoneGeo] (
[Id]
)
) ON [PRIMARY]
--GO
exec sp_addextendedproperty N'MS_Description', N'Dialogue de discordance dappareils à position habituelle affecté à la zone géographique ', N'user', N'dbo', N'table', N'DIN'
--GO
exec sp_addextendedproperty N'MS_Description', N'Identifiant unique au PT', N'user', N'dbo', N'table', N'DIN', N'column', N'Id'
--GO
exec sp_addextendedproperty N'MS_Description', N'Numéro du dialogue DIN', N'user', N'dbo', N'table', N'DIN', N'column', N'DIN_Num'
--GO
exec sp_addextendedproperty N'MS_Description', N'Zone géographique de rattachement du dialogue DIN', N'user', N'dbo', N'table', N'DIN', N'column', N'Zge_Id'
--GO
exec sp_addextendedproperty N'MS_Description', N'Ordre de classement des DIN', N'user', N'dbo', N'table', N'DIN', N'column', N'Ordre'
--GO
-- on renseigne la nouvelle table avec les DIN déjà saisis
DECLARE @DIN_Num sysname
DECLARE @Id_Zge bigint
DECLARE @Zge_Num sysname
DECLARE @cpt bigint
DECLARE @ordre int
DECLARE @pt sysname
SET @pt=(select db_name())
SET @ordre = 1
DECLARE C CURSOR FOR SELECT Id, Zge_Num, Zge_DINNum
FROM ZoneGeo
WHERE Zge_DIN = '1'
OPEN C
FETCH NEXT FROM C INTO @Id_Zge, @Zge_Num, @DIN_Num
WHILE @@FETCH_STATUS = 0
BEGIN
-- lecture du compteur d'id (+1)
SET @cpt=(SELECT Max(Pl_Compteur)+1 FROM POSTES..PlanT
WHERE Id = (SELECT In_Pl_Id FROM POSTES..Indice WHERE In_Bd_Pt = @pt))
--si on tombe sur plusieurs DIN identiques ou aucun nuléro de DIN
IF @DIN_NUM IS NULL
BEGIN
SET @DIN_NUM = '9999_' +@Zge_Num
END
ELSE IF EXISTS(SELECT DIN_Num FROM DIN WHERE DIN_Num=@DIN_Num)
BEGIN
SET @DIN_Num = @DIN_Num +'_' +@Zge_Num
END
INSERT INTO DIN (Id, DIN_Num, Zge_Id, Ordre) VALUES (@cpt, @DIN_Num, @Id_Zge, @ordre)
-- on met à jour les renvois
-- UPDATE Renvoi
-- SET Renv_Table = 'DIN', Renv_Col = 'DIN_Num', Renv_Cle1 = @cpt
-- WHERE Renv_Table = 'ZoneGeo' AND Renv_Col = 'Zge_DINNum' AND Renv_Cle1=@Id_Zge
SET @ordre=@ordre+1
-- mise à jour du compteur
UPDATE POSTES..PlanT SET Pl_Compteur = @cpt
WHERE Id =(SELECT In_Pl_Id FROM POSTES..Indice WHERE In_Bd_Pt = @pt)
FETCH NEXT FROM C INTO @Id_Zge, @Zge_Num, @DIN_Num
END
CLOSE C
DEALLOCATE C
IF @@ERROR = 0
BEGIN
ALTER TABLE dbo.ZoneGeo
DROP COLUMN Zge_DIN
ALTER TABLE dbo.ZoneGeo
DROP COLUMN Zge_DINNum
END
COMMIT TRANSACTION |
Partager