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 :
Ma procédure stocké reçoit le paramètre @CoursSuivis qui est de ce type.
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
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:
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
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
Auriez-vous une idée?
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.
Merci
Partager