Bonjour à tous,
J'ai peut être fait une erreur quelquepart. J'ai simplifié le code pour le reproduire a tous les coups. En decommentant une des lignes qui font appel à la colonne 'NumLigneInc', j'obtiens le message d'erreur msg 207, nom de colonne incorrect
Si je mets une table normal (sans le #), le probleme est identique.

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
 
IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[TestErreur]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
	DROP PROCEDURE [dbo].[TestErreur]
GO
CREATE PROCEDURE [dbo].[TestErreur]
AS
	IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[TableTestSource]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
		DROP TABLE [dbo].[TableTestSource]
 
	CREATE TABLE [dbo].[TableTestSource](
		[ID] uniqueidentifier ROWGUIDCOL  NOT NULL CONSTRAINT [DF_TableTestSource_ID]  DEFAULT (newid()),
		[Nom] [nvarchar](50) NULL,
		[NumLigne] [int] NULL,
		CONSTRAINT [PK_ID] PRIMARY KEY CLUSTERED ([ID] ASC)WITH FILLFACTOR = 90 ON [PRIMARY],
		) ON [PRIMARY]
 
	INSERT INTO [dbo].[TableTestSource] (Nom, NumLigne) VALUES ('Ligne1','1')
	INSERT INTO [dbo].[TableTestSource] (Nom, NumLigne) VALUES ('Ligne2','2')
	INSERT INTO [dbo].[TableTestSource] (Nom, NumLigne) VALUES ('Ligne3','3')
 
	SELECT TableTestSource.* INTO #TestLocal FROM TableTestSource WHERE 1=0
	--On ajoute une colonne de numerotation automatique
	ALTER TABLE #TestLocal ADD NumLigneInc bigint IDENTITY (0,1) NOT FOR REPLICATION
	-- Histoire qu'il y ait quelques lignes
	INSERT INTO #TestLocal (ID, Nom,NumLigne)
		SELECT TOP 10 ID, Nom, NumLigne
		FROM TableTestSource AS T
-- Cette ligne provoque une erreur 'NumLigneInc" colonne inconnue
--	UPDATE #TestLocal SET NumLigne=NumLigneInc + 1
 
-- Cette ligne provoque une erreur 'NumLigneInc" colonne inconnue
--	SELECT ID,Nom,NumLigne,NumLigneInc FROM #TestLocal
 
-- Cette ligne ne provoque jamais d'erreur et 'NumLigneInc' est apparente
	SELECT * FROM #TestLocal
 
	DROP TABLE #TestLocal
GO
DECLARE @RC int
EXECUTE @RC = [dbo].[TestErreur] 
GO
IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[TestErreur]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
	DROP PROCEDURE [dbo].[TestErreur]
J'ai contourné le probleme en créant une table declaree en dur pour faire mon comptage, mais c'est un peu plus chaud pour la suite au niveau des requetes et des traitements.
Merci si vous trouvez l'origine du probleme.