Procédure Stockée, requête modulaire
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
j'effectue actuellement une procédure stockée qui permet de récupérer des item* d'une table de ma base de donnée.
ma procédure stockée à donc 4 paramètres
1. last24 : passé à 1 si on veut les items seulement des dernières 24h
2. account_id : passé un int pour récupérer les items qui sont lié à ce dit compte
4. page / nbItem : passé page (page courante) et nbItem (nombre d'item par page) pour créer une pagination.
avant toute ma procédure stocké était constitué de IF. je devais donc créer une requête pour les items de ce compte les dernières 24h. les items de compte les dernière 24h avec pagination etc... ça devient assez vite surcharger.
je me suis mis dans l'idée exécuter qu'une seule requête et que celle-ci ce modifie suivant tel ou tel paramètre.
mes requêtes
Ma question est donc la suivante il y a-t-il une astuce que vous utiliser pour créer vos requête de manière modulaire, car je dois vous l'avouez aucune des mes recherches jusqu'ici n'ont été fructueuse.
Merci d'avance
Seezer
j'effectue actuellement une procédure stockée qui permet de récupérer des item* d'une table de ma base de donnée.
ma procédure stockée à donc 4 paramètres
1. last24 : passé à 1 si on veut les items seulement des dernières 24h
2. account_id : passé un int pour récupérer les items qui sont lié à ce dit compte
4. page / nbItem : passé page (page courante) et nbItem (nombre d'item par page) pour créer une pagination.
avant toute ma procédure stocké était constitué de IF. je devais donc créer une requête pour les items de ce compte les dernières 24h. les items de compte les dernière 24h avec pagination etc... ça devient assez vite surcharger.
je me suis mis dans l'idée exécuter qu'une seule requête et que celle-ci ce modifie suivant tel ou tel paramètre.
mes requêtes
-- Last 24h SELECT * FROM table WHERE DATEDIFF(SECOND,champ_date,GETDATE()) <= (24*60*60) -- via account_id SELECT * FROM table WHERE account_id = @account_id -- Paginate SELECT top(@nbItem) * FROM table WHERE id NOT IN( SELECT top(@page*@nbItem) id from table );
Ma question est donc la suivante il y a-t-il une astuce que vous utiliser pour créer vos requête de manière modulaire, car je dois vous l'avouez aucune des mes recherches jusqu'ici n'ont été fructueuse.
SELECT IF @page IS NOT NULL BEGIN TOP(@nbITEM) END WHERE -- la suite
Merci d'avance
Seezer
A voir également:
- Procédure Stockée, requête modulaire
- Procédure de frigo vide ✓ - Forum Consommation & Internet
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Le point d'entree de procedure est introuvable kernel32 dll ✓ - Forum Windows
- Requete sql pix - Forum PHP
- Le point d'entrée de procédure iswow64process2 est introuvable - Forum Windows
1 réponse
Bonjour,
Pour la pagination, il faut que je regarde, mais je pense qu'on peut faire ça avec des row_number.
Pour les autres paramètres, tu peux essayer cette structure, qui permet facilement de rajouter des critères de filtre :
Xavier
Pour la pagination, il faut que je regarde, mais je pense qu'on peut faire ça avec des row_number.
Pour les autres paramètres, tu peux essayer cette structure, qui permet facilement de rajouter des critères de filtre :
SELECT * FROM table WHERE (@account_id IS NULL OR account_id = @account_id) AND (@last24 = 0 OR DATEDIFF(SECOND,champ_date,GETDATE()) <= (24*60*60))
Xavier
Cela donnerait :
Après si tu as encore ton astuce avec le row_number je suis preneur.
Mais merci pour ton aide.
P.S. tu m'as aussi fait découvrir que Reivax c'était Xavier à l'envers :0
comme ça je garderais un oeil sur le possible problème de performance.
je te remercie de tes réponses, ils m'ont été fortement utiles.
A+
Seezer