Bonjour,

j'écris une procédure stockée(non terminée !) qui reçoit différents paramètres dont 1 Table Value Parameters dont le type est définit comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
CREATE TYPE [dbo].[CoursType] AS TABLE(
	[CoursId] [int] NULL,
	[CoursNom] [varchar](50) NULL
Ma procédure stocké reçoit le paramètre @CoursSuivis qui est de ce type.

Le but de cette procédure est de modifier une fiche élève et de parcourir la Table EleveCours et modifier les cours d'un même élève. Elle se présente comme ceci:
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
CREATE PROCEDURE [dbo].[sp_EditerEleve]
	@idEleve int,
	@nom varchar(50),
	@prenom varchar(50),
	@age int,
	@idstatut int,
	@annee int,
	@actif int,
	@cheminPhoto varchar(350),
	@CoursSuivis CoursType READONLY
 
AS
BEGIN
IF(@age BETWEEN 12 AND 20)
	BEGIN
		UPDATE Eleve SET Nom=@nom , Prenom=@prenom, Age=@age, IDStatut=@idstatut, Annee=@annee, Actif=@actif, Photo=@cheminPhoto
		WHERE IDEleve = @idEleve 
	END
 
 
	BEGIN
	DECLARE @NbreCoursActuel int
	DECLARE @NbreCours int
	BEGIN
		set @NbreCoursActuel = (SELECT COUNT(*) FROM EleveCours WHERE IDEleve = @idEleve);
		set @NbreCours = (SELECT COUNT(*) FROM @CoursSuivis);
	END
	IF @NbreCoursActuel = @NbreCours
	PRINT 'OK_1'
		BEGIN
		DECLARE @identifiantEleve int;
		SET @identifiantEleve  = ( SELECT IDEleve FROM EleveCours WHERE IDEleve = @idEleve);
		While (@identifiantEleve = @idEleve)
			BEGIN
			UPDATE EleveCours SET IDCours = (SELECT CoursId FROM @CoursSuivis), CoursNom = (SELECT CoursNom FROM @CoursSuivis) WHERE IDEleve = @idEleve;
			END
		END
	END
END
Mon problème est que lorsque j'exécute ma procédure, ma sous requète retourne visiblement plusieurs valeurs ce qui n 'est pas permis lorsqu'elle suit un =, !=, <... . Le message d'erreur est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Msg 512, Niveau 16, État 1, Procédure sp_EditerEleve, Ligne 38
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Auriez-vous une idée?

Merci