Bonjour,

Je voudrais faire un select imbriqué mais pour des raisons de modularité le faire en faisant une procédure stockée qui fait un select avec comme paramètre le tableau de résultat de l'appel d'une seconde procédure stockée appelée dans cette première.

en gros j'aurais une procédure 1 appelée par la procédure 2


la procédure 1 renverrait un tableau de int :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
CREATE PROCEDURE dbo.Table1
	(
		@id1 INT
		@ids(<truc pour avoir éventuellement une liste>) OUTPUT
	)
AS
SELECT      dbo.Table1.id2,
FROM        dbo.Table1	
WHERE	    dbo.Table1.id1 = @id1;
<truc qui écrit tous les dbo.Table1.id2 dans @ids>
la seconde fait un 2 eme select avec une clause where sur tous les résultats de l'appel de la première procédure stockée, et renvoie le tout.

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
 
CREATE PROCEDURE dbo.Table2
	(
		@id2 INT,
		@id  INT
	)
 
 
AS
	DECLARE @i INT 
	DECLARE @id1 INT
	DECLARE @ids(<truc pour avoir éventuellement une liste>) INT
        SET @id1 = id2
	EXECUTE MaBaseDeDonnée.dbo.MaProstock @id1, @ids OUTPUT
	GO
 
 
   WHILE @i <= datalength(@ids)
   BEGIN
 
	SELECT  dbo.Table2.id3,
	FROM    dbo.Table2	
	WHERE	dbo.Table2.id4 = @ids[i];
	i++
   END
sauriez vous si c'est possible et comment compléter cet exemple type pour qu'il fonctionne?
Merci à l'avance