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] |
Partager