Bonjour,

Ca fait un petit moment que j'essaie de créer une procedure stockée qui peut prendre un nom de base en parametre.

Ce qeu j'ai trouvé dans mes recherches :
On ne peut changer de base dans une procedure stockée qu'en utilisant les prepared statement.
Mon pb etant le suivant : il me faut un curseur sur la requete.

en gros, voici ce que ca devrait donner :
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
 
 
CREATE  PROCEDURE `maProcedure`(pBase varchar(50))
BEGIN
 
	declare vbar int(6);
	declare v_fin_curseur boolean default false;
	declare curs CURSOR for select
					bar
				from 
					foo
				where 
					foobar in (select foobar from pBase.fooD);
 
	declare continue handler for not found set v_fin_curseur = True;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
	OPEN curs;   
	FETCH curs INTO vbar;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
	WHILE (v_fin_curseur = false) DO  
		#code ici
		FETCH curs INTO vbar;   
	end while;
    END$$
DELIMITER ;
A priori, on ne peut pas faire de prepared statement sur un resultat mis en curseur. Me trompe-je?