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

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

17 réponses
Avatar
Olivier
Bonjour

Dans une proc=E9dure stock=E9e, comment passer en param=E8tre 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

10 réponses

1 2
Avatar
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/DBA
http://sgbd.arbinada.com
Avatar
Olivier
On 23 avr, 12:35, Serguei Tarassov wrote:
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
Avatar
Sylvain Lafontaine
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" wrote in message
news:
On 23 avr, 12:35, Serguei Tarassov wrote:
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
Avatar
olivier
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" a écrit dans le
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" wrote in message
news:
On 23 avr, 12:35, Serguei Tarassov wrote:
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




Avatar
Sylvain Lafontaine
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" wrote in message
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" a écrit dans le
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" wrote in message
news:
On 23 avr, 12:35, Serguei Tarassov wrote:
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








Avatar
olivier
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" a écrit dans le
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" wrote in message
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" a écrit dans le
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" wrote in message
news:
On 23 avr, 12:35, Serguei Tarassov wrote:
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












Avatar
Sylvain Lafontaine
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" wrote in message
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" a écrit dans le
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" wrote in message
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" a écrit dans le
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" wrote in message
news:
On 23 avr, 12:35, Serguei Tarassov wrote:
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
















Avatar
olivier
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" a écrit dans le
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" wrote in message
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" a écrit dans le
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" wrote in message
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" a écrit dans le
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" wrote in message
news:
On 23 avr, 12:35, Serguei Tarassov wrote:
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




















Avatar
olivier
ok je crois que c'est le :


Case @OrderBy WHEN NULL THEN Field1 ELSE Null END

qu'il n'aime pas



"Sylvain Lafontaine" a écrit dans le
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" wrote in message
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" a écrit dans le
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" wrote in message
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" a écrit dans le
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" wrote in message
news:
On 23 avr, 12:35, Serguei Tarassov wrote:
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




















Avatar
Patrice
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...
1 2