2011-10-27 8 views
2

J'ai créé une procédure stockée GetNotifications qui renvoie toutes les notifications pour un utilisateur spécifique. D'autres développeurs utilisent ce SP à de nombreux endroits différents.Existe-t-il une meilleure approche qu'une procédure stockée SQL?

Maintenant, nous avons besoin de mettre en œuvre une fonctionnalité de pagination afin de ne pas inonder les utilisateurs avec toutes les notifications en même temps.

Je ne peux pas modifier le SP existant puisqu'il est utilisé. Je peux créer un autre SP avec des fonctionnalités de pagination, mais je ne veux vraiment pas faire cela car il nécessite beaucoup de répétition de code et bien sûr il serait nul si nous changeons la logique métier pour recevoir des notifications à l'avenir.

C'est quelque chose que je peux faire: créer un nouveau SP qui appelle en interne le GetNotifications, puis implémenter la pagination sur le jeu de résultats retourné. Mais alors ce ne serait pas une charge inutile sur le serveur puisque le GetNotifications retournera tous les résultats indépendamment? Pouvez-vous imaginer une meilleure façon d'aborder ce problème?

+1

Pouvez-vous refactoriser la partie centrale de la requête en une vue ou une fonction table? –

Répondre

8

Modifiez la procédure stockée avec un paramètre facultatif pour renvoyer la fonctionnalité paginée ou tous les résultats (valeur par défaut). Cela devrait vous donner la fonctionnalité dont vous avez besoin sans casser le code existant.

3

Avoir une procédure stockée qui prend en 2 params: @PageNumber, @RowsPerPage

Si 0 est passé dans les deux pour params renvoyer toutes les lignes, sinon faire la pagination.

Mettez à jour votre code existant pour passer en 0/0 pour les args, puis votre nouveau code peut transmettre des valeurs réelles si/quand il veut pagination.

Comme suggéré dans les commentaires, si vous spécifiez des valeurs par défaut de 0/0 pour les paramètres, vous n'avez même pas besoin de mettre à jour le code existant.

+4

Si vous ajoutez les varaibles à la fin et avez des valeurs par défaut pour les variables qui seront le tout retourner, vous n'avez même pas besoin de modifier le code existant qui appelle le proc .. – HLGEM