Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Procédure stockée et paramètres

1 réponse
Avatar
Kati
Bonjour =E0 tous,

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 ?

Merci d'avance.

1 réponse

Avatar
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: ******************