procédure stockée, passer un paramètre pour le tri

Le
Olivier
Bonjour

Dans une procédure stockée, comment passer en paramètre une variable
pour le tri ?

create PROCEDURE MyProc
AS
BEGIN
SET NOCOUNT on;

SELECT *
FROM matable

ORDER BY myvar ??? DESC ou ASC en fonction

END
Merci
Olivier
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Serguei Tarassov
Le #21616151
On 23/04/2010 11:51, Olivier wrote:
Bonjour

Dans une procédure stockée, comment passer en paramètre une variable
pour le tri ?

create PROCEDURE MyProc
AS
BEGIN
SET NOCOUNT on;

SELECT *
FROM matable

ORDER BY myvar ??? DESC ou ASC en fonction

END
Merci
Olivier



Bonjour,

1. La procédure avec plusieurs IF ... ELSE ...
2. La procédure qui compose SQL dynamique et puis fait sp_executesql
@SQL (attention, l'utilisateur doit avoir les droits SELECT sur cette table)
3. SELECT * FROM MyTable
ORDER BY
CASE @OrderBy
WHEN 'Field1' THEN Field1
WHEN 'Field2' THEN Field2
...
END

A+
Serguei TARASSOV
MCITP SQL Server Dev/DBA
http://sgbd.arbinada.com
Olivier
Le #21622151
On 23 avr, 12:35, Serguei Tarassov
On 23/04/2010 11:51, Olivier wrote:





> Bonjour

> Dans une procédure stockée, comment passer en paramètre une varia ble
> pour le tri ?

> create PROCEDURE MyProc
> AS
> BEGIN
> SET NOCOUNT on;

> SELECT *
> FROM matable

> ORDER BY  myvar ??? DESC ou ASC en fonction

> END
> Merci
> Olivier

Bonjour,

1. La procédure avec plusieurs IF ... ELSE ...
2. La procédure qui compose SQL dynamique et puis fait sp_executesql
@SQL (attention, l'utilisateur doit avoir les droits SELECT sur cette tab le)
3. SELECT * FROM MyTable
ORDER BY
CASE @OrderBy
   WHEN 'Field1' THEN Field1
   WHEN 'Field2' THEN Field2
   ...
END

A+
Serguei TARASSOV
MCITP SQL Server Dev/DBAhttp://sgbd.arbinada.com- Masquer le texte des me ssages précédents -

- Afficher le texte des messages précédents -




Bonjour,

Ok super mais … car il y a toujours un mais :-)

Si je veux trier sur plusieurs champs dans des ordres différents :
Field1 = Champs1 DESC, Champs2 ASC

J’ai essayé : WHEN 'Field1' THEN Field1 DESC, Field2

Mais ca passe pas

? Merci
Olivier
Sylvain Lafontaine
Le #21622251
Vous devez utiliser plusieurs Case.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"Olivier" news:
On 23 avr, 12:35, Serguei Tarassov
On 23/04/2010 11:51, Olivier wrote:





> Bonjour

> Dans une procédure stockée, comment passer en paramètre une variable
> pour le tri ?

> create PROCEDURE MyProc
> AS
> BEGIN
> SET NOCOUNT on;

> SELECT *
> FROM matable

> ORDER BY myvar ??? DESC ou ASC en fonction

> END
> Merci
> Olivier

Bonjour,

1. La procédure avec plusieurs IF ... ELSE ...
2. La procédure qui compose SQL dynamique et puis fait sp_executesql
@SQL (attention, l'utilisateur doit avoir les droits SELECT sur cette
table)
3. SELECT * FROM MyTable
ORDER BY
CASE @OrderBy
WHEN 'Field1' THEN Field1
WHEN 'Field2' THEN Field2
...
END

A+
Serguei TARASSOV
MCITP SQL Server Dev/DBAhttp://sgbd.arbinada.com- Masquer le texte des
messages précédents -

- Afficher le texte des messages précédents -




Bonjour,

Ok super mais … car il y a toujours un mais :-)

Si je veux trier sur plusieurs champs dans des ordres différents :
Field1 = Champs1 DESC, Champs2 ASC

J’ai essayé : WHEN 'Field1' THEN Field1 DESC, Field2

Mais ca passe pas

? Merci
Olivier
olivier
Le #21632581
bonjour,

j'ai essayé mais il ne veut pas de ( 'WHEN 'Field1+Field2' THEN Field1
DESC, Field2 ) !

SELECT * FROM MyTable

ORDER BY

CASE @OrderBy
WHEN 'Field1' THEN Field1
WHEN 'Field2' THEN Field2

WHEN 'Field1+Field2' THEN Field1 DESC, Field2 -- Erreur içi !!

END


comment faire ?

merci bien
olivier



"Sylvain Lafontaine" message de news: %
Vous devez utiliser plusieurs Case.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"Olivier" news:
On 23 avr, 12:35, Serguei Tarassov
On 23/04/2010 11:51, Olivier wrote:





> Bonjour

> Dans une procédure stockée, comment passer en paramètre une variable
> pour le tri ?

> create PROCEDURE MyProc
> AS
> BEGIN
> SET NOCOUNT on;

> SELECT *
> FROM matable

> ORDER BY myvar ??? DESC ou ASC en fonction

> END
> Merci
> Olivier

Bonjour,

1. La procédure avec plusieurs IF ... ELSE ...
2. La procédure qui compose SQL dynamique et puis fait sp_executesql
@SQL (attention, l'utilisateur doit avoir les droits SELECT sur cette
table)
3. SELECT * FROM MyTable
ORDER BY
CASE @OrderBy
WHEN 'Field1' THEN Field1
WHEN 'Field2' THEN Field2
...
END

A+
Serguei TARASSOV
MCITP SQL Server Dev/DBAhttp://sgbd.arbinada.com- Masquer le texte des
messages précédents -

- Afficher le texte des messages précédents -




Bonjour,

Ok super mais … car il y a toujours un mais :-)

Si je veux trier sur plusieurs champs dans des ordres différents :
Field1 = Champs1 DESC, Champs2 ASC

J’ai essayé : WHEN 'Field1' THEN Field1 DESC, Field2

Mais ca passe pas

? Merci
Olivier




Sylvain Lafontaine
Le #21632891
Vous n'essayez toujours d'utiliser qu'un seul Case dans votre dernier
example. Voici un example avec plusieurs Case:

Order By
CASE @OrderBy WHEN 'Field1' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field2' THEN Field2 Else Null End,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field2 Else Null End

En retournant Null, 0 ou n'importe quelle autre constante, vous neutralisez
l'Order By pour le Case correspondant.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"olivier" news:
bonjour,

j'ai essayé mais il ne veut pas de ( 'WHEN 'Field1+Field2' THEN Field1
DESC, Field2 ) !

SELECT * FROM MyTable

ORDER BY

CASE @OrderBy
WHEN 'Field1' THEN Field1
WHEN 'Field2' THEN Field2

WHEN 'Field1+Field2' THEN Field1 DESC, Field2 -- Erreur içi !!

END


comment faire ?

merci bien
olivier



"Sylvain Lafontaine" message de news: %
Vous devez utiliser plusieurs Case.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"Olivier" news:
On 23 avr, 12:35, Serguei Tarassov
On 23/04/2010 11:51, Olivier wrote:





> Bonjour

> Dans une procédure stockée, comment passer en paramètre une variable
> pour le tri ?

> create PROCEDURE MyProc
> AS
> BEGIN
> SET NOCOUNT on;

> SELECT *
> FROM matable

> ORDER BY myvar ??? DESC ou ASC en fonction

> END
> Merci
> Olivier

Bonjour,

1. La procédure avec plusieurs IF ... ELSE ...
2. La procédure qui compose SQL dynamique et puis fait sp_executesql
@SQL (attention, l'utilisateur doit avoir les droits SELECT sur cette
table)
3. SELECT * FROM MyTable
ORDER BY
CASE @OrderBy
WHEN 'Field1' THEN Field1
WHEN 'Field2' THEN Field2
...
END

A+
Serguei TARASSOV
MCITP SQL Server Dev/DBAhttp://sgbd.arbinada.com- Masquer le texte des
messages précédents -

- Afficher le texte des messages précédents -




Bonjour,

Ok super mais … car il y a toujours un mais :-)

Si je veux trier sur plusieurs champs dans des ordres différents :
Field1 = Champs1 DESC, Champs2 ASC

J’ai essayé : WHEN 'Field1' THEN Field1 DESC, Field2

Mais ca passe pas

? Merci
Olivier








olivier
Le #21633131
ok maintenant il me dit :

Une Expression constante a été rencontrée dans la liste ORDER BY ???


CREATE PROCEDURE Mytestproc

AS BEGIN
SELECT * FROM MyTable
ORDER BY
CASE @OrderBy WHEN 'Field1' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field2' THEN Field2 Else Null End,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field2 Else Null End

END


merci
olivier




"Sylvain Lafontaine" message de news:
Vous n'essayez toujours d'utiliser qu'un seul Case dans votre dernier
example. Voici un example avec plusieurs Case:

Order By
CASE @OrderBy WHEN 'Field1' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field2' THEN Field2 Else Null End,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field2 Else Null End

En retournant Null, 0 ou n'importe quelle autre constante, vous
neutralisez l'Order By pour le Case correspondant.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"olivier" news:
bonjour,

j'ai essayé mais il ne veut pas de ( 'WHEN 'Field1+Field2' THEN Field1
DESC, Field2 ) !

SELECT * FROM MyTable

ORDER BY

CASE @OrderBy
WHEN 'Field1' THEN Field1
WHEN 'Field2' THEN Field2

WHEN 'Field1+Field2' THEN Field1 DESC, Field2 -- Erreur içi !!

END


comment faire ?

merci bien
olivier



"Sylvain Lafontaine" message de news: %
Vous devez utiliser plusieurs Case.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"Olivier" news:
On 23 avr, 12:35, Serguei Tarassov
On 23/04/2010 11:51, Olivier wrote:





> Bonjour

> Dans une procédure stockée, comment passer en paramètre une variable
> pour le tri ?

> create PROCEDURE MyProc
> AS
> BEGIN
> SET NOCOUNT on;

> SELECT *
> FROM matable

> ORDER BY myvar ??? DESC ou ASC en fonction

> END
> Merci
> Olivier

Bonjour,

1. La procédure avec plusieurs IF ... ELSE ...
2. La procédure qui compose SQL dynamique et puis fait sp_executesql
@SQL (attention, l'utilisateur doit avoir les droits SELECT sur cette
table)
3. SELECT * FROM MyTable
ORDER BY
CASE @OrderBy
WHEN 'Field1' THEN Field1
WHEN 'Field2' THEN Field2
...
END

A+
Serguei TARASSOV
MCITP SQL Server Dev/DBAhttp://sgbd.arbinada.com- Masquer le texte des
messages précédents -

- Afficher le texte des messages précédents -




Bonjour,

Ok super mais … car il y a toujours un mais :-)

Si je veux trier sur plusieurs champs dans des ordres différents :
Field1 = Champs1 DESC, Champs2 ASC

J’ai essayé : WHEN 'Field1' THEN Field1 DESC, Field2

Mais ca passe pas

? Merci
Olivier












Sylvain Lafontaine
Le #21633321
Vous avez oublié de définir @OrderBy dans votre procédure.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"olivier" news:
ok maintenant il me dit :

Une Expression constante a été rencontrée dans la liste ORDER BY ???


CREATE PROCEDURE Mytestproc

AS BEGIN
SELECT * FROM MyTable
ORDER BY
CASE @OrderBy WHEN 'Field1' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field2' THEN Field2 Else Null End,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field2 Else Null End

END


merci
olivier




"Sylvain Lafontaine" message de news:
Vous n'essayez toujours d'utiliser qu'un seul Case dans votre dernier
example. Voici un example avec plusieurs Case:

Order By
CASE @OrderBy WHEN 'Field1' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field2' THEN Field2 Else Null End,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field2 Else Null End

En retournant Null, 0 ou n'importe quelle autre constante, vous
neutralisez l'Order By pour le Case correspondant.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"olivier" news:
bonjour,

j'ai essayé mais il ne veut pas de ( 'WHEN 'Field1+Field2' THEN Field1
DESC, Field2 ) !

SELECT * FROM MyTable

ORDER BY

CASE @OrderBy
WHEN 'Field1' THEN Field1
WHEN 'Field2' THEN Field2

WHEN 'Field1+Field2' THEN Field1 DESC, Field2 -- Erreur içi !!

END


comment faire ?

merci bien
olivier



"Sylvain Lafontaine" message de news: %
Vous devez utiliser plusieurs Case.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"Olivier" news:
On 23 avr, 12:35, Serguei Tarassov
On 23/04/2010 11:51, Olivier wrote:





> Bonjour

> Dans une procédure stockée, comment passer en paramètre une variable
> pour le tri ?

> create PROCEDURE MyProc
> AS
> BEGIN
> SET NOCOUNT on;

> SELECT *
> FROM matable

> ORDER BY myvar ??? DESC ou ASC en fonction

> END
> Merci
> Olivier

Bonjour,

1. La procédure avec plusieurs IF ... ELSE ...
2. La procédure qui compose SQL dynamique et puis fait sp_executesql
@SQL (attention, l'utilisateur doit avoir les droits SELECT sur cette
table)
3. SELECT * FROM MyTable
ORDER BY
CASE @OrderBy
WHEN 'Field1' THEN Field1
WHEN 'Field2' THEN Field2
...
END

A+
Serguei TARASSOV
MCITP SQL Server Dev/DBAhttp://sgbd.arbinada.com- Masquer le texte des
messages précédents -

- Afficher le texte des messages précédents -




Bonjour,

Ok super mais … car il y a toujours un mais :-)

Si je veux trier sur plusieurs champs dans des ordres différents :
Field1 = Champs1 DESC, Champs2 ASC

J’ai essayé : WHEN 'Field1' THEN Field1 DESC, Field2

Mais ca passe pas

? Merci
Olivier
















olivier
Le #21633431
non je crois pas ? : mais je ne l'avais pas ecrit :-)

CREATE PROCEDURE Mytestproc
@OrderBy NVARCHAR(MAX) = NULL

AS BEGIN
SELECT * FROM MyTable
ORDER BY
CASE @OrderBy WHEN 'Field1' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field2' THEN Field2 Else Null End,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field2 Else Null End

END


"Sylvain Lafontaine" message de news: %
Vous avez oublié de définir @OrderBy dans votre procédure.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"olivier" news:
ok maintenant il me dit :

Une Expression constante a été rencontrée dans la liste ORDER BY ???


CREATE PROCEDURE Mytestproc

AS BEGIN
SELECT * FROM MyTable
ORDER BY
CASE @OrderBy WHEN 'Field1' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field2' THEN Field2 Else Null End,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field2 Else Null End

END


merci
olivier




"Sylvain Lafontaine" message de news:
Vous n'essayez toujours d'utiliser qu'un seul Case dans votre dernier
example. Voici un example avec plusieurs Case:

Order By
CASE @OrderBy WHEN 'Field1' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field2' THEN Field2 Else Null End,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field2 Else Null End

En retournant Null, 0 ou n'importe quelle autre constante, vous
neutralisez l'Order By pour le Case correspondant.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"olivier" news:
bonjour,

j'ai essayé mais il ne veut pas de ( 'WHEN 'Field1+Field2' THEN Field1
DESC, Field2 ) !

SELECT * FROM MyTable

ORDER BY

CASE @OrderBy
WHEN 'Field1' THEN Field1
WHEN 'Field2' THEN Field2

WHEN 'Field1+Field2' THEN Field1 DESC, Field2 -- Erreur içi !!

END


comment faire ?

merci bien
olivier



"Sylvain Lafontaine" message de news: %
Vous devez utiliser plusieurs Case.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"Olivier" news:
On 23 avr, 12:35, Serguei Tarassov
On 23/04/2010 11:51, Olivier wrote:





> Bonjour

> Dans une procédure stockée, comment passer en paramètre une
> variable
> pour le tri ?

> create PROCEDURE MyProc
> AS
> BEGIN
> SET NOCOUNT on;

> SELECT *
> FROM matable

> ORDER BY myvar ??? DESC ou ASC en fonction

> END
> Merci
> Olivier

Bonjour,

1. La procédure avec plusieurs IF ... ELSE ...
2. La procédure qui compose SQL dynamique et puis fait sp_executesql
@SQL (attention, l'utilisateur doit avoir les droits SELECT sur cette
table)
3. SELECT * FROM MyTable
ORDER BY
CASE @OrderBy
WHEN 'Field1' THEN Field1
WHEN 'Field2' THEN Field2
...
END

A+
Serguei TARASSOV
MCITP SQL Server Dev/DBAhttp://sgbd.arbinada.com- Masquer le texte
des messages précédents -

- Afficher le texte des messages précédents -




Bonjour,

Ok super mais … car il y a toujours un mais :-)

Si je veux trier sur plusieurs champs dans des ordres différents :
Field1 = Champs1 DESC, Champs2 ASC

J’ai essayé : WHEN 'Field1' THEN Field1 DESC, Field2

Mais ca passe pas

? Merci
Olivier




















olivier
Le #21633611
ok je crois que c'est le :


Case @OrderBy WHEN NULL THEN Field1 ELSE Null END

qu'il n'aime pas



"Sylvain Lafontaine" message de news: %
Vous avez oublié de définir @OrderBy dans votre procédure.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"olivier" news:
ok maintenant il me dit :

Une Expression constante a été rencontrée dans la liste ORDER BY ???


CREATE PROCEDURE Mytestproc

AS BEGIN
SELECT * FROM MyTable
ORDER BY
CASE @OrderBy WHEN 'Field1' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field2' THEN Field2 Else Null End,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field2 Else Null End

END


merci
olivier




"Sylvain Lafontaine" message de news:
Vous n'essayez toujours d'utiliser qu'un seul Case dans votre dernier
example. Voici un example avec plusieurs Case:

Order By
CASE @OrderBy WHEN 'Field1' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field2' THEN Field2 Else Null End,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field1 Else Null End Desc,
CASE @OrderBy WHEN 'Field1+Field2' THEN Field2 Else Null End

En retournant Null, 0 ou n'importe quelle autre constante, vous
neutralisez l'Order By pour le Case correspondant.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"olivier" news:
bonjour,

j'ai essayé mais il ne veut pas de ( 'WHEN 'Field1+Field2' THEN Field1
DESC, Field2 ) !

SELECT * FROM MyTable

ORDER BY

CASE @OrderBy
WHEN 'Field1' THEN Field1
WHEN 'Field2' THEN Field2

WHEN 'Field1+Field2' THEN Field1 DESC, Field2 -- Erreur içi !!

END


comment faire ?

merci bien
olivier



"Sylvain Lafontaine" message de news: %
Vous devez utiliser plusieurs Case.

--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web: http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.


"Olivier" news:
On 23 avr, 12:35, Serguei Tarassov
On 23/04/2010 11:51, Olivier wrote:





> Bonjour

> Dans une procédure stockée, comment passer en paramètre une
> variable
> pour le tri ?

> create PROCEDURE MyProc
> AS
> BEGIN
> SET NOCOUNT on;

> SELECT *
> FROM matable

> ORDER BY myvar ??? DESC ou ASC en fonction

> END
> Merci
> Olivier

Bonjour,

1. La procédure avec plusieurs IF ... ELSE ...
2. La procédure qui compose SQL dynamique et puis fait sp_executesql
@SQL (attention, l'utilisateur doit avoir les droits SELECT sur cette
table)
3. SELECT * FROM MyTable
ORDER BY
CASE @OrderBy
WHEN 'Field1' THEN Field1
WHEN 'Field2' THEN Field2
...
END

A+
Serguei TARASSOV
MCITP SQL Server Dev/DBAhttp://sgbd.arbinada.com- Masquer le texte
des messages précédents -

- Afficher le texte des messages précédents -




Bonjour,

Ok super mais … car il y a toujours un mais :-)

Si je veux trier sur plusieurs champs dans des ordres différents :
Field1 = Champs1 DESC, Champs2 ASC

J’ai essayé : WHEN 'Field1' THEN Field1 DESC, Field2

Mais ca passe pas

? Merci
Olivier




















Patrice
Le #21633971
Case @OrderBy WHEN NULL THEN Field1 ELSE Null END

qu'il n'aime pas



Exact. Visiblement le message d'erreur indique que trier en utilisant une
valeur constante plutôt qu'un nom de champ n'est pas supporté ce qui est
confirmé si j'essaie par exemple :

select * from sys.databases order by NULL (qui donne donc le même message).

Donc si le tri n'est pas défini, trier sur un champ par défaut comme la clé
primaire par exemple plutôt qu'en utilisant la constante NULL...
Publicité
Poster une réponse
Anonyme