Je sui sens=E9e mettre au point une proc=E9dure stock=E9e, mais=20
tr=E8s honn=EAtement, je vois pas trop comment m'y prendre...
Je voudrais mettre en place un syst=E8me d'archives.
Je dois afficher 6 archives par page.
Je ne dois pas prendre les 5 archives les plus r=E9centes=20
(elles ont un affichage diff=E9rent)
Je voudrais que ma proc=E9dure stock=E9e puisse prendre en=20
param=E8tre mon num=E9ro de page d'archive et le nombre=20
d'archives =E0 r=E9cup=E9rer.
En gros, je voudrais quelque chose de ce genre :
ALTER Procedure ArchivesNews
AS
SELECT TOP 6 // ici un param=E8tre nombre =E0 la place du 6
id,
titre,
resume
=20
FROM news
WHERE id NOT IN
(
SELECT TOP (5 + Num=E9rodePage*6)
id
FROM news
ORDER BY date_news DESC
)
=09
ORDER BY date_news DESC
Comment je peux faire pour passer mon num=E9ro de page en=20
param=E8tre ?
Est-il possible aussi de param=E9trer le 6 (du TOP 6), en=20
imaginant que plus tard, on change de pr=E9sentation, et=20
qu'on ne mette plus que 4 archives par exemple ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD
Il n'est pas possible de placer un paramètre de requête autrement qu'en partie droite d'un opérateur.
En revanche il est possible de faire des requêtes dynamique. Cela consiste à construire une requête à l'aide de simples chaines de caractères assemblées, puis de l'exécuter.
Exemple :
CREATE PROCEDURE SP_MYPROC @N INT, @LAST_ID INT AS
DECLARE @SQL VARCHAR(8000)
IF @LAST_ID IS NULL SELECT @LAST_ID = MIN(id)-1 FROM news
SET @SQL = 'SELECT TOP ' + CAST(@N AS VARCHAR(32)) +' id, titre, resume ' + 'FROM news ' + 'WHERE id > ' + CAST(@LAST_ID AS VARVCHAR(32)) + 'ORDER BY date_news DESC '
EXEC(@SQL)
A +
Kati a écrit:
Bonjour à tous,
Je sui sensée mettre au point une procédure stockée, mais très honnêtement, je vois pas trop comment m'y prendre...
Je voudrais mettre en place un système d'archives. Je dois afficher 6 archives par page. Je ne dois pas prendre les 5 archives les plus récentes (elles ont un affichage différent)
Je voudrais que ma procédure stockée puisse prendre en paramètre mon numéro de page d'archive et le nombre d'archives à récupérer.
En gros, je voudrais quelque chose de ce genre :
ALTER Procedure ArchivesNews
AS SELECT TOP 6 // ici un paramètre nombre à la place du 6 id, titre, resume
FROM news WHERE id NOT IN ( SELECT TOP (5 + NumérodePage*6) id FROM news ORDER BY date_news DESC )
ORDER BY date_news DESC
Comment je peux faire pour passer mon numéro de page en paramètre ? Est-il possible aussi de paramétrer le 6 (du TOP 6), en imaginant que plus tard, on change de présentation, et qu'on ne mette plus que 4 archives par exemple ?
Merci d'avance.
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
Il n'est pas possible de placer un paramètre de requête autrement qu'en
partie droite d'un opérateur.
En revanche il est possible de faire des requêtes dynamique.
Cela consiste à construire une requête à l'aide de simples chaines de
caractères assemblées, puis de l'exécuter.
Exemple :
CREATE PROCEDURE SP_MYPROC @N INT, @LAST_ID INT
AS
DECLARE @SQL VARCHAR(8000)
IF @LAST_ID IS NULL
SELECT @LAST_ID = MIN(id)-1 FROM news
SET @SQL = 'SELECT TOP ' + CAST(@N AS VARCHAR(32))
+' id, titre, resume '
+ 'FROM news '
+ 'WHERE id > ' + CAST(@LAST_ID AS VARVCHAR(32))
+ 'ORDER BY date_news DESC '
EXEC(@SQL)
A +
Kati a écrit:
Bonjour à tous,
Je sui sensée mettre au point une procédure stockée, mais
très honnêtement, je vois pas trop comment m'y prendre...
Je voudrais mettre en place un système d'archives.
Je dois afficher 6 archives par page.
Je ne dois pas prendre les 5 archives les plus récentes
(elles ont un affichage différent)
Je voudrais que ma procédure stockée puisse prendre en
paramètre mon numéro de page d'archive et le nombre
d'archives à récupérer.
En gros, je voudrais quelque chose de ce genre :
ALTER Procedure ArchivesNews
AS
SELECT TOP 6 // ici un paramètre nombre à la place du 6
id,
titre,
resume
FROM news
WHERE id NOT IN
(
SELECT TOP (5 + NumérodePage*6)
id
FROM news
ORDER BY date_news DESC
)
ORDER BY date_news DESC
Comment je peux faire pour passer mon numéro de page en
paramètre ?
Est-il possible aussi de paramétrer le 6 (du TOP 6), en
imaginant que plus tard, on change de présentation, et
qu'on ne mette plus que 4 archives par exemple ?
Merci d'avance.
--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
Il n'est pas possible de placer un paramètre de requête autrement qu'en partie droite d'un opérateur.
En revanche il est possible de faire des requêtes dynamique. Cela consiste à construire une requête à l'aide de simples chaines de caractères assemblées, puis de l'exécuter.
Exemple :
CREATE PROCEDURE SP_MYPROC @N INT, @LAST_ID INT AS
DECLARE @SQL VARCHAR(8000)
IF @LAST_ID IS NULL SELECT @LAST_ID = MIN(id)-1 FROM news
SET @SQL = 'SELECT TOP ' + CAST(@N AS VARCHAR(32)) +' id, titre, resume ' + 'FROM news ' + 'WHERE id > ' + CAST(@LAST_ID AS VARVCHAR(32)) + 'ORDER BY date_news DESC '
EXEC(@SQL)
A +
Kati a écrit:
Bonjour à tous,
Je sui sensée mettre au point une procédure stockée, mais très honnêtement, je vois pas trop comment m'y prendre...
Je voudrais mettre en place un système d'archives. Je dois afficher 6 archives par page. Je ne dois pas prendre les 5 archives les plus récentes (elles ont un affichage différent)
Je voudrais que ma procédure stockée puisse prendre en paramètre mon numéro de page d'archive et le nombre d'archives à récupérer.
En gros, je voudrais quelque chose de ce genre :
ALTER Procedure ArchivesNews
AS SELECT TOP 6 // ici un paramètre nombre à la place du 6 id, titre, resume
FROM news WHERE id NOT IN ( SELECT TOP (5 + NumérodePage*6) id FROM news ORDER BY date_news DESC )
ORDER BY date_news DESC
Comment je peux faire pour passer mon numéro de page en paramètre ? Est-il possible aussi de paramétrer le 6 (du TOP 6), en imaginant que plus tard, on change de présentation, et qu'on ne mette plus que 4 archives par exemple ?
Merci d'avance.
-- Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************