Pour avoir moi même utiliser cette méthode dans des procstocks sur une grosse BdD SQL Server 2005 je confirme que c'est une bonne approche.
Je ne sais pas ce qu'il en est sous Oracle, mais dans notre cas ça marche très bien, on a factorisé le truc sous forme de fonction. Ainsi ça s'utilise avec
.... Where macouille IN (select * from splitChaineToTable(@monVarchar)) ...
Il y a une autre possibilité, tout à fait immonde en terme de maintenance du code, mais fonctionnelle.
Tu stockes toute ta requete dans une chaine et tu fais un gros exec à la fin. C'est moche, illisible, pourri, mais ça marche à la perfection.
Illustration :
Declare @req varchar(500);
Set @req = 'select ... where Id in (' + @monVarchar + ');
Exec @req;
Ainsi au passage le sgbdr perd la notion de ce qui était ou non une chaîne, et n'a plus qu'une requête banale à faire tourner.
Bon, staffreux hein
mais ça marche et ça demande aucun travail cérébral.
Message édité par TotalRecall le 26-10-2007 à 22:58:43
---------------
Topic .Net - C# @ Prog