IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

[SQL SERVER 2K5] Chaine tronquée


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2003
    Messages : 171
    Par défaut [SQL SERVER 2K5] Chaine tronquée
    Bonjour

    Je n'arrive pas à comprendre pourquoi ma procédure stockée ne marche pas et renvoi ceci.
    J'ai fait exprès de mettre le même nvarchar qui est présent dans la définition de la table ventes_hebdo pour pas avoir de problème de troncation j'ai essayez avec 150 mais pareil.

    Merci d'avance pour vos lumiéres.

    Debut Procédure Alim_Data_Ventes_hebdo_delta_rattrapage à 20090724
    Fichier à Traiter20090724
    R60a_ventes_suivi_placement_20090101.txt
    Msg 8152, Level 16, State 13, Procedure Alim_Data_Ventes_hebdo_delta_rattrapage, Line 41
    Les données de chaîne ou binaires seront tronquées.

    L'instruction a été arrêtée.
    Avertissement*: la valeur NULL est éliminée par un agrégat ou par une autre opération SET.
    --------------
    count [ODS_VEGAS].[dbo].[Ventes_hebdo_Work] 0

    (0 row(s) affected)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    ALTER PROCEDURE  [dbo].[Alim_Data_Ventes_hebdo_delta_rattrapage]
    AS
    BEGIN
     
    DECLARE @fichiersource nvarchar (50)
    declare @count_vente_work varchar (10)
    declare @tempst datetime
     
    select @tempst =  getdate()
    print 'Debut Procédure Alim_Data_Ventes_hebdo_delta_rattrapage à ' + convert (nvarchar , @tempst ,112)
     
     	-- on déclare le curseur qui boucle dans ventes
    	DECLARE curseur_fichier CURSOR FOR
    			SELECT distinct FichierSource
    			FROM ventes_hebdo
    	-- on ouvre le curseur
    	OPEN curseur_fichier
     
    	-- on retourne le premier résultat
    	FETCH NEXT FROM curseur_fichier INTO @fichiersource
     
    	-- parcours de la boucle tant que fetch n'est pas vide
    	WHILE @@FETCH_STATUS = 0
    	BEGIN
     
    select @tempst =  getdate()
    print 'Fichier à Traiter' + convert (nvarchar , @tempst ,112)
     
    print @fichiersource
    @fichiersource = 
    BEGIN TRANSACTION VENTE
     
    BEGIN TRANSACTION TMP
     
    	INSERT INTO [ODS_VEGAS].[dbo].[Ventes_hebdo_Work_1]
    			   ([codemagasin],[date],[vente(1)_retour(2)]
    				,[coderemise],[codetva],[ean],[codevendeur]
    				,[Code_VendeurMagasin],[ANNULE]	,[NumTicket]      
    				,[Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI]
    				,[codeagence],[codepdl],[sousfamille],[IMEI]   
    				,[NomClient],[PrenomClient]	,[TelephoneClient]
    				,[CodePostalClient],[VilleClient],[AdresseClient]
    				,[ComplementAdresse],[FichierSource]
    				,[qte_dev],[qte],[DeltaQte],[ca_dev],[ca],[DeltaCa]         
    				,[mtremise_dev],[mtremise],[DeltaMtremise]
    				,[mttva_dev],[mttva],[DeltaMttva]
    				,[DateFichier],Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI)
     
    				(SELECT   tmp.codemagasin , tmp.date, tmp.[vente(1)_retour(2)], tmp.coderemise, tmp.codetva, tmp.ean, 
    				tmp.codevendeur, tmp.Code_VendeurMagasin,tmp.ANNULE, tmp.NumTicket, 
    				tmp.Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI,
    				tmp.codeagence, tmp.codepdl, tmp.sousfamille, tmp.IMEI, tmp.NomClient, tmp.PrenomClient, tmp.TelephoneClient, tmp.CodePostalClient, 
    				tmp.VilleClient, tmp.AdresseClient, tmp.ComplementAdresse, tmp.FichierSource, ISNULL(SUM(tmp.qte),0) AS qte_dev, ISNULL(SUM(prod.qte), 0) AS qte, 
    				ISNULL(SUM(tmp.qte),0) - ISNULL(SUM(prod.qte), 0) AS DeltaQte, ISNULL(SUM(tmp.ca),0) AS ca_dev, ISNULL(SUM(prod.ca), 0) AS ca, 
    				ISNULL(SUM(tmp.ca),0) - ISNULL(SUM(prod.ca), 0) AS DeltaCa, ISNULL(SUM(tmp.mtremise),0) AS mtremise_dev, ISNULL(SUM(prod.mtremise), 0) AS mtremise, 
    				ISNULL(SUM(tmp.mtremise),0) - ISNULL(SUM(prod.mtremise), 0) AS DeltaMtremise, ISNULL(SUM(tmp.mttva),0) AS mttva_dev, ISNULL(SUM(prod.mttva), 0) AS mttva, 
    				ISNULL(SUM(tmp.mttva),0) - ISNULL(SUM(prod.mttva), 0) AS DeltaMttva, tmp.DateFichier
    				,(convert (nvarchar , tmp.date ,112) + '_'+ 
    				substring(tmp.Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI,15,
    				len(tmp.Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI)) ) as Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI
     
    				FROM   DWH_VEGAS.dbo.Ventes_hebdo_BIS as prod right outer join 
    				DWH_VEGAS.dbo.Ventes_hebdo AS tmp ON  prod.Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI = tmp.Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI 
    				where tmp.FichierSource =  @fichiersource
     
    				GROUP BY tmp.[Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI],tmp.Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI,
    				tmp.codemagasin, tmp.date, tmp.[vente(1)_retour(2)], tmp.coderemise, tmp.codetva, tmp.ean, tmp.codevendeur, 
    				tmp.ANNULE, tmp.NumTicket,tmp.codeagence, tmp.codepdl, tmp.sousfamille, tmp.IMEI,
    				tmp.NomClient, tmp.PrenomClient, tmp.TelephoneClient, tmp.CodePostalClient, 
    				tmp.VilleClient, tmp.AdresseClient, tmp.ComplementAdresse, tmp.FichierSource, 
    				tmp.DateFichier,tmp.Code_VendeurMagasin)
     
    COMMIT TRANSACTION TMP
    --[Ventes_hebdo_BIS]
    print '--------------'
    select  @count_vente_work = count(*)  from [ODS_VEGAS].[dbo].[Ventes_hebdo_Work_1]
     
    print 'count [ODS_VEGAS].[dbo].[Ventes_hebdo_Work] ' + @count_vente_work 
     
    				--insertion des données
    				INSERT INTO [DWH_VEGAS].[dbo].[Ventes_hebdo_BIS]
    				   select  [Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI],Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI
    						   ,[date],[ean],[Code_VendeurMagasin],[codeagence]
    						   ,[codemagasin],[codevendeur],[codepdl],[vente(1)_retour(2)]
    						   ,[DeltaQte],[DeltaCa],[coderemise],[DeltaMtremise],[DeltaMttva],[codetva],[sousfamille]
    							,[IMEI],[ANNULE],[NomClient],[PrenomClient],[TelephoneClient]
    						   ,[CodePostalClient],[VilleClient],[AdresseClient],[ComplementAdresse]
    							,[NumTicket],[DateFichier],[FichierSource]
    				 from [ODS_VEGAS].[dbo].[Ventes_hebdo_Work_1]
    				where DeltaQte +DeltaCa + DeltaMtremise+DeltaMttva <> 0
     
    			--suppresion de la table temporaire
    			delete ODS_VEGAS.dbo.Ventes_hebdo_Work_1
     
    select @tempst =  getdate()
    print 'Fin du traitement du fichier'+ convert (nvarchar , @tempst ,112)
    COMMIT TRANSACTION VENTE
     
    -- on passe à la ligne suivante	
    		FETCH NEXT FROM curseur_fichier INTO @fichiersource
     
    	END
     
    	-- on ferme le curseur
    	CLOSE curseur_fichier
     
    	-- on libère la mémoire
    	DEALLOCATE curseur_fichier
     
    END

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Difficile de vous aider sans la description de vos tables.

    Même s'il ne vous est d'aucune utilisé, servez-vous de votre curseur pour trouver la ligne qui pose problème, en utilisant PRINT.

    Vous pouvez ensuite transformer votre procédure stockée pour effectuer un traitement ensembliste qui sera plus rapide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    ALTER PROCEDURE  [dbo].[Alim_Data_Ventes_hebdo_delta_rattrapage]
    AS
    BEGIN 
    	DECLARE @fichiersource NVARCHAR(50)
    	DECLARE @count_vente_work VARCHAR(10)
    	DECLARE @tempst DATETIME
     
    	SELECT @tempst =  GETDATE()
    	PRINT 'Debut Procédure Alim_Data_Ventes_hebdo_delta_rattrapage à ' + CONVERT (NVARCHAR, @tempst, 112)
     
    	BEGIN TRANSACTION VENTE
     
    		WITH
    			CTE_FICHIERS (FichierSource) AS
    			(
    				SELECT DISTINCT FichierSource
    				FROM ventes_hebdo
    			)  
    		INSERT INTO [ODS_VEGAS].[dbo].[Ventes_hebdo_Work_1]
    		(
    			codemagasin,
    			date,
    			[vente(1)_retour(2)],
    			coderemise,
    			codetva,
    			ean,
    			codevendeur,
    			Code_VendeurMagasin,
    			ANNULE,
    			NumTicket,
    			Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI,
    			codeagence,
    			codepdl,
    			sousfamille,
    			IMEI,
    			NomClient,
    			PrenomClient,
    			TelephoneClient
    			CodePostalClient,
    			VilleClient,
    			AdresseClient
    			ComplementAdresse,
    			FichierSource
    			qte_dev,
    			qte,
    			DeltaQte,
    			ca_dev,
    			ca,
    			DeltaCa         
    			mtremise_dev,
    			mtremise,
    			DeltaMtremise
    			mttva_dev,
    			mttva,
    			DeltaMttva,
    			DateFichier,
    			Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI
    		) 
    		SELECT tmp.codemagasin,
    				tmp.date,
    				tmp.[vente(1)_retour(2)],
    				tmp.coderemise,
    				tmp.codetva,
    				tmp.ean, 
    				tmp.codevendeur,
    				tmp.Code_VendeurMagasin,
    				tmp.ANNULE,
    				tmp.NumTicket,
    				tmp.Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI,
    				tmp.codeagence,
    				tmp.codepdl,
    				tmp.sousfamille,
    				tmp.IMEI,
    				tmp.NomClient,
    				tmp.PrenomClient,
    				tmp.TelephoneClient,
    				tmp.CodePostalClient, 
    				tmp.VilleClient,
    				tmp.AdresseClient,
    				tmp.ComplementAdresse,
    				tmp.FichierSource,
    				ISNULL(SUM(tmp.qte),0) AS qte_dev,
    				ISNULL(SUM(prod.qte), 0) AS qte, 
    				ISNULL(SUM(tmp.qte),0) - ISNULL(SUM(prod.qte), 0) AS DeltaQte,
    				ISNULL(SUM(tmp.ca),0) AS ca_dev,
    				ISNULL(SUM(prod.ca), 0) AS ca, 
    				ISNULL(SUM(tmp.ca),0) - ISNULL(SUM(prod.ca), 0) AS DeltaCa,
    				ISNULL(SUM(tmp.mtremise),0) AS mtremise_dev,
    				ISNULL(SUM(prod.mtremise), 0) AS mtremise, 
    				ISNULL(SUM(tmp.mtremise),0) - ISNULL(SUM(prod.mtremise), 0) AS DeltaMtremise,
    				ISNULL(SUM(tmp.mttva),0) AS mttva_dev,
    				ISNULL(SUM(prod.mttva), 0) AS mttva, 
    				ISNULL(SUM(tmp.mttva),0) - ISNULL(SUM(prod.mttva), 0) AS DeltaMttva,
    				tmp.DateFichier,
    				(
    					CONVERT (NVARCHAR , tmp.date ,112) + '_' +
    					SUBSTRING
    					(
    						tmp.Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI,
    						15,
    						LEN(tmp.Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI)
    					)
    				 ) AS Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI 
    		FROM DWH_VEGAS.dbo.Ventes_hebdo_BIS AS prod
    		RIGHT OUTER JOIN DWH_VEGAS.dbo.Ventes_hebdo AS tmp
    			ON  prod.Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI = tmp.Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI 
    		JOIN CTE_FICHIERS
    			ON tmp.FichierSource =  CTE_FICHIERS.FichierSource
    		GROUP BY tmp.codemagasin,
    				tmp.date,
    				tmp.[vente(1)_retour(2)],
    				tmp.coderemise,
    				tmp.codetva,
    				tmp.ean, 
    				tmp.codevendeur,
    				tmp.Code_VendeurMagasin,
    				tmp.ANNULE,
    				tmp.NumTicket,
    				tmp.Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI,
    				tmp.codeagence,
    				tmp.codepdl,
    				tmp.sousfamille,
    				tmp.IMEI,
    				tmp.NomClient,
    				tmp.PrenomClient,
    				tmp.TelephoneClient,
    				tmp.CodePostalClient, 
    				tmp.VilleClient,
    				tmp.AdresseClient,
    				tmp.ComplementAdresse,
    				tmp.FichierSource
     
    		--insertion des données
    		INSERT INTO DWH_VEGAS.dbo.Ventes_hebdo_BIS
    		SELECT Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI,
    				Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI,
    				date,
    				ean,
    				Code_VendeurMagasin,
    				codeagence,
    				codemagasin,
    				codevendeur,
    				codepdl,
    				[vente(1)_retour(2)],
    				DeltaQte,
    				DeltaCa,
    				coderemise,
    				DeltaMtremise,
    				DeltaMttva,
    				codetva,
    				sousfamille,
    				IMEI,
    				ANNULE,
    				NomClient,
    				PrenomClient,
    				TelephoneClient
    				CodePostalClient,
    				VilleClient,
    				AdresseClient,
    				ComplementAdresse
    				NumTicket,
    				DateFichier,
    				FichierSource
    		FROM ODS_VEGAS.dbo.Ventes_hebdo_Work_1
    		WHERE DeltaQte + DeltaCa + DeltaMtremise+DeltaMttva <> 0
     
    		--suppresion de la table temporaire ==> Vous ne supprimez pas la table, vous la videz
    		DELETE FROM ODS_VEGAS.dbo.Ventes_hebdo_Work_1
     
    	COMMIT TRANSACTION VENTE
    END

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2003
    Messages : 171
    Par défaut
    merci pour votre réponse votre solution de compile pas un probleme du coté du common table expression je ne vois pas pourquoi et il manquait une virgule aussi mais effectivement c'est une bonne piste et peut un gain de performance avec

    Les définitions sont les memes quasiments

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    USE [DWH_VEGAS]
    GO
    /****** Object:  Table [dbo].[Ventes_hebdo]    Script Date: 07/24/2009 15:55:43 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[Ventes_hebdo](
    	[Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI] [nvarchar](250) NOT NULL,
    	[date] [datetime] NOT NULL,
    	[ean] [nvarchar](50) NOT NULL,
    	[Code_VendeurMagasin] [nvarchar](50) NOT NULL,
    	[codeagence] [nvarchar](50) NULL,
    	[codemagasin] [nvarchar](50) NOT NULL,
    	[codevendeur] [nvarchar](50) NOT NULL,
    	[codepdl] [nvarchar](50) NULL,
    	[vente(1)_retour(2)] [int] NULL,
    	[qte] [int] NULL,
    	[ca] [real] NULL,
    	[coderemise] [nvarchar](50) NULL,
    	[mtremise] [real] NULL,
    	[mttva] [real] NULL,
    	[codetva] [nvarchar](50) NULL,
    	[sousfamille] [nvarchar](50) NULL,
    	[IMEI] [nvarchar](50) NULL,
    	[ANNULE] [int] NULL,
    	[NomClient] [nvarchar](50) NULL,
    	[PrenomClient] [nvarchar](50) NULL,
    	[TelephoneClient] [nvarchar](50) NULL,
    	[CodePostalClient] [nvarchar](50) NULL,
    	[VilleClient] [nvarchar](50) NULL,
    	[AdresseClient] [nvarchar](50) NULL,
    	[ComplementAdresse] [nvarchar](50) NULL,
    	[NumTicket] [nvarchar](50) NULL,
    	[DateFichier] [datetime] NULL,
    	[FichierSource] [nvarchar](50) NULL,
    	[Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI] [nvarchar](150) NULL,
     CONSTRAINT [PK_Ventes_hebdo_1] PRIMARY KEY CLUSTERED 
    (
    	[Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    USE [ODS_VEGAS]
    GO
    /****** Object:  Table [dbo].[Ventes_hebdo_Work_1]    Script Date: 07/24/2009 15:56:15 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[Ventes_hebdo_Work_1](
    	[Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI] [nvarchar](250) NOT NULL,
    	[date] [datetime] NOT NULL,
    	[ean] [nvarchar](50) NOT NULL,
    	[Code_VendeurMagasin] [nvarchar](50) NOT NULL,
    	[codeagence] [nvarchar](50) NULL,
    	[codemagasin] [nvarchar](50) NOT NULL,
    	[codevendeur] [nvarchar](50) NOT NULL,
    	[codepdl] [nvarchar](50) NULL,
    	[vente(1)_retour(2)] [int] NULL,
    	[qte] [int] NULL,
    	[ca] [real] NULL,
    	[ca_dev] [real] NULL,
    	[qte_dev] [int] NULL,
    	[mtremise_dev] [real] NULL,
    	[mttva_dev] [real] NULL,
    	[DeltaCa] [real] NULL,
    	[DeltaQte] [int] NULL,
    	[DeltaMttva] [real] NULL,
    	[DeltaMtremise] [real] NULL,
    	[coderemise] [nvarchar](50) NULL,
    	[mtremise] [real] NULL,
    	[mttva] [real] NULL,
    	[codetva] [nvarchar](50) NULL,
    	[sousfamille] [nvarchar](50) NULL,
    	[IMEI] [nvarchar](50) NULL,
    	[ANNULE] [int] NULL,
    	[NomClient] [nvarchar](50) NULL,
    	[PrenomClient] [nvarchar](50) NULL,
    	[TelephoneClient] [nvarchar](50) NULL,
    	[CodePostalClient] [nvarchar](50) NULL,
    	[VilleClient] [nvarchar](50) NULL,
    	[AdresseClient] [nvarchar](50) NULL,
    	[ComplementAdresse] [nvarchar](50) NULL,
    	[NumTicket] [nvarchar](50) NULL,
    	[DateFichier] [datetime] NULL,
    	[FichierSource] [nvarchar](50) NULL,
    	[Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI] [nvarchar](50) NULL,
     CONSTRAINT [PK_Ventes_hebdo_Work_1] PRIMARY KEY CLUSTERED 
    (
    	[Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    USE [DWH_VEGAS]
    GO
    /****** Object:  Table [dbo].[Ventes_hebdo_BIS]    Script Date: 07/24/2009 15:56:39 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[Ventes_hebdo_BIS](
    	[Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI] [nvarchar](250) NOT NULL,
    	[Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI] [nvarchar](150) NULL,
    	[date] [datetime] NOT NULL,
    	[ean] [nvarchar](50) NOT NULL,
    	[Code_VendeurMagasin] [nvarchar](50) NOT NULL,
    	[codeagence] [nvarchar](50) NULL,
    	[codemagasin] [nvarchar](50) NOT NULL,
    	[codevendeur] [nvarchar](50) NOT NULL,
    	[codepdl] [nvarchar](50) NULL,
    	[vente(1)_retour(2)] [int] NULL,
    	[qte] [int] NULL,
    	[ca] [real] NULL,
    	[coderemise] [nvarchar](50) NULL,
    	[mtremise] [real] NULL,
    	[mttva] [real] NULL,
    	[codetva] [nvarchar](50) NULL,
    	[sousfamille] [nvarchar](50) NULL,
    	[IMEI] [nvarchar](50) NULL,
    	[ANNULE] [int] NULL,
    	[NomClient] [nvarchar](50) NULL,
    	[PrenomClient] [nvarchar](50) NULL,
    	[TelephoneClient] [nvarchar](50) NULL,
    	[CodePostalClient] [nvarchar](50) NULL,
    	[VilleClient] [nvarchar](50) NULL,
    	[AdresseClient] [nvarchar](50) NULL,
    	[ComplementAdresse] [nvarchar](50) NULL,
    	[NumTicket] [nvarchar](50) NULL,
    	[DateFichier] [datetime] NULL,
    	[FichierSource] [nvarchar](50) NULL,
     CONSTRAINT [PK_Ventes_hebdo_BIS] PRIMARY KEY CLUSTERED 
    (
    	[Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2003
    Messages : 171
    Par défaut
    J'ai transformé ma procédure comme conseillé avec le CTE
    par contre j'ai toujours le meme pb

    Merci de vos éclaircissements

    Debut Procédure Alim_Data_Ventes_hebdo_delta_rattrapage à 2009-07-27T11:55:36.033
    Msg 8152, Level 16, State 13, Procedure Alim_Data_Ventes_hebdo_delta_rattrapage_new, Line 17
    Les données de chaîne ou binaires seront tronquées.
    L'instruction a été arrêtée.
    Avertissement*: la valeur NULL est éliminée par un agrégat ou par une autre opération SET.

    (0 row(s) affected)
    durée : 137533

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    98
    99
    100
    101
    102
    103
    104
    105
    106
    alter PROCEDURE  [dbo].[Alim_Data_Ventes_hebdo_delta_rattrapage_new]
    AS
    BEGIN 
    	DECLARE @fichiersource NVARCHAR(50)
    	DECLARE @count_vente_work VARCHAR(10)
    	DECLARE @tempst DATETIME
    	DECLARE @dateDeb DATETIME
    	DECLARE @dateFin DATETIME
     
    	SELECT @tempst =  GETDATE();
    	set @dateDeb = GETDATE();
     
    	PRINT 'Debut Procédure Alim_Data_Ventes_hebdo_delta_rattrapage à ' + CONVERT (NVARCHAR, @tempst, 126) ;
     
    	--BEGIN TRANSACTION VENTE
     
    		WITH CTE_FICHIERS ( FichierSource ) 
    		AS (
    				SELECT DISTINCT FichierSource
    				FROM [DWH_VEGAS].[dbo].ventes_hebdo
    			)  
     
    		INSERT INTO [ODS_VEGAS].[dbo].[Ventes_hebdo_Work_1]
    		(
    			codemagasin,date,[vente(1)_retour(2)],coderemise,
    			codetva,ean,codevendeur,Code_VendeurMagasin,
    			ANNULE,	NumTicket,
    			Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI,
    			codeagence,	codepdl,sousfamille,IMEI,
    			NomClient,PrenomClient,	TelephoneClient,CodePostalClient,
    			VilleClient,AdresseClient,ComplementAdresse,FichierSource,
    			qte_dev,qte,DeltaQte,ca_dev,ca,	DeltaCa,         
    			mtremise_dev,mtremise,DeltaMtremise,
    			mttva_dev,mttva,DeltaMttva,
    			DateFichier,Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI
    		) 
    		(SELECT tmp.codemagasin,	tmp.date,tmp.[vente(1)_retour(2)],
    				tmp.coderemise,	tmp.codetva,tmp.ean, tmp.codevendeur,
    				tmp.Code_VendeurMagasin,tmp.ANNULE,	tmp.NumTicket,
    				tmp.Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI,
    				tmp.codeagence,	tmp.codepdl,tmp.sousfamille,tmp.IMEI,
    				tmp.NomClient,tmp.PrenomClient,	tmp.TelephoneClient,
    				tmp.CodePostalClient, tmp.VilleClient,
    				tmp.AdresseClient,tmp.ComplementAdresse,
    				tmp.FichierSource,ISNULL(SUM(tmp.qte),0) AS qte_dev,
    				ISNULL(SUM(prod.qte), 0) AS qte, 
    				ISNULL(SUM(tmp.qte),0) - ISNULL(SUM(prod.qte), 0) AS DeltaQte,
    				ISNULL(SUM(tmp.ca),0) AS ca_dev,ISNULL(SUM(prod.ca), 0) AS ca, 
    				ISNULL(SUM(tmp.ca),0) - ISNULL(SUM(prod.ca), 0) AS DeltaCa,
    				ISNULL(SUM(tmp.mtremise),0) AS mtremise_dev,ISNULL(SUM(prod.mtremise), 0) AS mtremise, 
    				ISNULL(SUM(tmp.mtremise),0) - ISNULL(SUM(prod.mtremise), 0) AS DeltaMtremise,
    				ISNULL(SUM(tmp.mttva),0) AS mttva_dev,ISNULL(SUM(prod.mttva), 0) AS mttva, 
    				ISNULL(SUM(tmp.mttva),0) - ISNULL(SUM(prod.mttva), 0) AS DeltaMttva,
    				tmp.DateFichier,
    				(CONVERT (NVARCHAR , tmp.date ,112) + '_' +SUBSTRING
    					(tmp.Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI,15,
    					LEN(tmp.Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI))
    				 ) AS Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI 
    		FROM DWH_VEGAS.dbo.Ventes_hebdo_BIS AS prod
    		RIGHT OUTER JOIN DWH_VEGAS.dbo.Ventes_hebdo AS tmp
    			ON  prod.Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI = tmp.Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI 
    		JOIN CTE_FICHIERS AS FIC
    			ON tmp.FichierSource =  FIC.FichierSource
    		GROUP BY tmp.codemagasin,tmp.date,tmp.[vente(1)_retour(2)],
    				tmp.coderemise,tmp.codetva,	tmp.ean, tmp.codevendeur,
    				tmp.Code_VendeurMagasin,tmp.ANNULE,	tmp.NumTicket,
    				tmp.Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI,
    				tmp.codeagence,	tmp.codepdl,tmp.sousfamille,
    				tmp.IMEI,tmp.NomClient,	tmp.PrenomClient,
    				tmp.TelephoneClient,tmp.CodePostalClient,tmp.VilleClient,
    				tmp.AdresseClient,tmp.ComplementAdresse,tmp.FichierSource,tmp.DateFichier);
     
     
    		--insertion des données
    		INSERT INTO DWH_VEGAS.dbo.Ventes_hebdo_BIS
      ([Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI]
               ,[Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI]
               ,[date],[ean],[Code_VendeurMagasin],[codeagence],[codemagasin]
               ,[codevendeur],[codepdl] ,[vente(1)_retour(2)],[qte]
               ,[ca] ,[coderemise] ,[mtremise] ,[mttva] ,[codetva] ,[sousfamille]
               ,[IMEI]  ,[ANNULE] ,[NomClient] ,[PrenomClient]
               ,[TelephoneClient]  ,[CodePostalClient] ,[VilleClient] ,[AdresseClient]
               ,[ComplementAdresse]  ,[NumTicket] ,[DateFichier] ,[FichierSource])
    		(SELECT Id_Fichier_Ean_VendeurMagasin_Numticket_remise_IMEI,
    				Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI,
    				date,ean,Code_VendeurMagasin,
    				codeagence,	codemagasin,codevendeur,codepdl,
    				[vente(1)_retour(2)],DeltaQte as Qte,
    				DeltaCa as Ca ,coderemise,DeltaMtremise as Mtremise,
    				DeltaMttva as Mttva,codetva,sousfamille,
    				IMEI,ANNULE,NomClient,PrenomClient,
    				TelephoneClient,CodePostalClient,VilleClient,
    				AdresseClient,ComplementAdresse,NumTicket,
    				DateFichier,FichierSource
    		FROM ODS_VEGAS.dbo.Ventes_hebdo_Work_1
    		WHERE DeltaQte + DeltaCa + DeltaMtremise+DeltaMttva <> 0);
     
    		--suppresion de la table temporaire ==> Vous ne supprimez pas la table, vous la videz
    		--DELETE FROM ODS_VEGAS.dbo.Ventes_hebdo_Work_1;
     
    		set @dateFin = GETDATE();
     
    		print 'durée : ' + CONVERT (NVARCHAR, DATEDIFF(millisecond, @dateDeb, @dateFin));
     
    	--COMMIT TRANSACTION VENTE
    END

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 44
    Par défaut Structure des tables
    Bonjour,

    Il faidrait vérifier si entre les tables Ventes_Hebdo, il n'y a pas de différence de taille entre les champs similaires. En fait ce problème apparait quand vous tentez d'insérer une chaine de caractère sur une colonne de taille plus petite. Là, le système refuse en sortant le message de troncature. Pour cela, je vous invite vivement à vérifier les tailles de la source et de la destination pour essayer de trouver l'origine de l'erreur.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2003
    Messages : 171
    Par défaut
    [Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI] [nvarchar](50)
    [Id_date_Ean_VendeurMagasin_Numticket_remise_IMEI] [nvarchar](150)

    j'y suis passé 50fois avant de m'en rendre compte une erreur de frappe surement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/05/2008, 15h16
  2. [C# 2K8 & MS-SQL Server 2K5] Probléme de sauvegarde DB avec SMO
    Par emmr.rida dans le forum Développement
    Réponses: 2
    Dernier message: 03/05/2008, 14h30
  3. [Oracle 10g & MS SQL Server 2K5] DTS Import/Export Wizard
    Par tamiii dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 11/04/2008, 09h08
  4. SQL SERVER remplacer chaine vide sans update
    Par Alex35 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/11/2007, 13h40
  5. Réponses: 3
    Dernier message: 06/07/2006, 09h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo