Bonjour
J'ai fais une procédure stockée pour insérer des données dans ma base, et j'ai une erreur que je ne comprend pas et n'arrive pas à résoudre.
Must declare the scalar variable "@id". Voici mon code :

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
 
CREATE PROCEDURE [dbo].[Insert_Langue] 
	-- Add the parameters for the stored procedure here
        @id int = null,
	@lvl int = null,
	@name nvarchar (100)= null
 
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
 
	declare @la_id int;
	select   @la_id = la_id from LANGUE where la_name = @name;
 
	declare @Query nvarchar(MAX);
	declare @Query2 nvarchar(MAX);
	declare @Param nvarchar(MAX);
 
	BEGIN TRANSACTION 	
	SET NOCOUNT ON;
 
	set @Query ='';
	Set @Param = @Param  + ',@id int '	
	Set @Param = @Param  + ',@lvl int '
	Set @Param = @Param  + ',@name nvarchar(100) '
 
 
 
    -- Insert into DB
            set @Query = 'INSERT INTO [dbo].[USER_LANGUE] ';
			set @Query = + @Query + '([id] ' ;
			set @Query2 =  ' VALUES (@id';
 
			if (@la_id <> NULL ) BEGIN 
				set @Query = @Query + ',[la_id] ';
				set @Query2 =@Query2 + ', @la_id';
			END
 
			if (@la_id <> NULL ) BEGIN 
				set @Query = @Query + ',[lvl] ';
				set @Query2 =@Query2 + ', @lvl';
			END
			set @Query = + @Query + ') ' + @Query2+ ')'
 
			IF (@Query <> '' ) 
			begin
 
			EXECUTE sp_executesql  @Query, @Param, @id = @id 
                                                          @la_id = @la_id,
                                                          @lvl = @lvl
                        end
COMMIT TRANSACTION
END
Merci d'avance pour votre aide

Dev