Bonjour à tous,

J'ai une procédure stockée 'GET_employe' qui fonctionne très bien. Dans cet procédure, il y a juste une requête qui me récupère la liste de mes employés en lui faisant passer un id en paramètre.
Petit exemple simplifié:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
ALTER PROCEDURE GET_employe
 
    @matricule as varchar(8)    
 
AS
 
SELECT nom, prenom, adresse
FROM T_employe
WHERE Emp_actif = 1 AND Emp_matricule = @matricule
 
RETURN
J'intègre cela dans SL depuis l’explorateur de serveurs, je fais glisser ma procédure sur le Designer Linq To SQL.

Et je l'appel via

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
DataClasses1DataContext data = new DataClasses1DataContext();
 
var toto = data.GET_employe("02840013");
 
foreach (var pointeur in toto)
{
...
}
Et la tous fonctionne, alors vous allez me demander pourquoi je viens vous enmbeter ^^

En fait, j'essaye de modifier ma procédure pour faire une recherche sur Emp_matricule, seulement si la variable @matricule n'est pas vide. Je n'est trouvé que cet solution:

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
ALTER PROCEDURE GET_employe
 
    @matricule as varchar(8)    
 
AS
 
DECLARE @req as varchar(8000)
 
SET @req ='SELECT nom, prenom, adresse
FROM T_employe
WHERE Emp_actif = 1 '
 
IF(@matricule != '')
BEGIN
    SET @req = @req + 'AND Emp_matricule = '''+@matricule+''''
END
 
EXEC(@req)
 
RETURN
Et la plus rien ne fonctionne. SL me répond le message:
L'instruction foreach ne peut pas fonctionner sur des variables de type 'int', car 'int' ne contient pas de définition public pour 'GetEnumerator'
Sachant que dans ma variable toto, il me retourne juste 0.
Encore moins compréhensible pour moi, si je fait un
SET @matricule = '02840013'
Juste avant ma requête, dans ma procédure, cela fonctionne.

Désolé pour cet lonnngue explication mais je commence à craquer ^^

Merci de votre aide