deux solutions : construire une table temporaire locale et y palcer tous les pays puis joindre cette table dans la requête :
Au passage on ne parle pas de champ mais de colonnes !
En plus, mieux vaut le BETWEEN
SELECT * FROM MyTable T INNER JOIN MaTableTemporairePays P ON T.MaColonnePays = P.MaColonnePays WHERE MaColonneDate BETWEEN @DateDebut AND @DateFin
sinon, utiliser du SQL dynamique (moins performant)
A +
Sebho a écrit:
Bonjour,
quelle serait la syntaxe pour passer à une procédure stockée un liste de paramètres comme ceci avec un des paramètres qui serait un tableau ?
@DateDebut @DateFin @Pays
SELECT * FROM MyTable WHERE MonChampDate>=@DateDebut AND MonChampDate<=@DateFin AND MonChampPays LIKE '@Pays'
Je voudrais pouvoir placer x pays dans la variable @Pays , les variables peuvent elles être un tableau @Pays() faut il concaténer un truc du style
........AND (MonChampPays Like @pays(0) or MonChampPays Like @pays(1)) ............
comment connaitre le nombre d'éléments dans le tableau ?
ou alors plutot
........AND (MonChampPays IN @Pays)
comment doit etre renseignée la variable Pays alors ? EXECUTE MyStroredProc '01-01-2004', '01/01/2005', 'FRANCE,ALLEMAGNE,BELGIQUE' ????
quelle est la bonne méthode
merci bcp pour votre aide Seb
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste 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 ************************ www.datasapiens.com *************************
F.S
Deux autre solutions ; - une c'est de mettre le recordset dans une table temporaire globale ##MyTab et l'interroger à l'interieur de la procedure. - et l'autre c'est de mettre le RecordSet dans une chaine XML avec la clause FOR XML et passer la chaine XML à la procedure ensuite l'interroger avec OPENXML. F.S
"Fred BROUARD" a écrit :
deux solutions : construire une table temporaire locale et y palcer tous les pays puis joindre cette table dans la requête :
Au passage on ne parle pas de champ mais de colonnes !
En plus, mieux vaut le BETWEEN
SELECT * FROM MyTable T INNER JOIN MaTableTemporairePays P ON T.MaColonnePays = P.MaColonnePays WHERE MaColonneDate BETWEEN @DateDebut AND @DateFin
sinon, utiliser du SQL dynamique (moins performant)
A +
Sebho a écrit: > Bonjour, > > quelle serait la syntaxe pour passer à une procédure stockée un liste de > paramètres comme ceci avec un des paramètres qui serait un tableau ? > > @DateDebut > @DateFin > @Pays > > SELECT * FROM MyTable WHERE MonChampDate>=@DateDebut AND > MonChampDate<=@DateFin AND MonChampPays LIKE '@Pays' > > Je voudrais pouvoir placer x pays dans la variable @Pays , les variables > peuvent elles être un tableau @Pays() > faut il concaténer un truc du style > > ........AND (MonChampPays Like @pays(0) or MonChampPays Like @pays(1)) > ............ > > comment connaitre le nombre d'éléments dans le tableau ? > > ou alors plutot > > ........AND (MonChampPays IN @Pays) > > comment doit etre renseignée la variable Pays alors ? EXECUTE MyStroredProc > '01-01-2004', '01/01/2005', 'FRANCE,ALLEMAGNE,BELGIQUE' ???? > > quelle est la bonne méthode > > merci bcp pour votre aide > Seb > >
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste 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 ************************ www.datasapiens.com *************************
Deux autre solutions ;
- une c'est de mettre le recordset dans une table temporaire globale ##MyTab
et l'interroger à l'interieur de la procedure.
- et l'autre c'est de mettre le RecordSet dans une chaine XML avec la clause
FOR XML et passer la chaine XML à la procedure ensuite l'interroger avec
OPENXML.
F.S
"Fred BROUARD" a écrit :
deux solutions :
construire une table temporaire locale et y palcer tous les pays puis joindre
cette table dans la requête :
Au passage on ne parle pas de champ mais de colonnes !
En plus, mieux vaut le BETWEEN
SELECT *
FROM MyTable T
INNER JOIN MaTableTemporairePays P
ON T.MaColonnePays = P.MaColonnePays
WHERE MaColonneDate BETWEEN @DateDebut AND @DateFin
sinon, utiliser du SQL dynamique (moins performant)
A +
Sebho a écrit:
> Bonjour,
>
> quelle serait la syntaxe pour passer à une procédure stockée un liste de
> paramètres comme ceci avec un des paramètres qui serait un tableau ?
>
> @DateDebut
> @DateFin
> @Pays
>
> SELECT * FROM MyTable WHERE MonChampDate>=@DateDebut AND
> MonChampDate<=@DateFin AND MonChampPays LIKE '@Pays'
>
> Je voudrais pouvoir placer x pays dans la variable @Pays , les variables
> peuvent elles être un tableau @Pays()
> faut il concaténer un truc du style
>
> ........AND (MonChampPays Like @pays(0) or MonChampPays Like @pays(1))
> ............
>
> comment connaitre le nombre d'éléments dans le tableau ?
>
> ou alors plutot
>
> ........AND (MonChampPays IN @Pays)
>
> comment doit etre renseignée la variable Pays alors ? EXECUTE MyStroredProc
> '01-01-2004', '01/01/2005', 'FRANCE,ALLEMAGNE,BELGIQUE' ????
>
> quelle est la bonne méthode
>
> merci bcp pour votre aide
> Seb
>
>
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste 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
************************ www.datasapiens.com *************************
Deux autre solutions ; - une c'est de mettre le recordset dans une table temporaire globale ##MyTab et l'interroger à l'interieur de la procedure. - et l'autre c'est de mettre le RecordSet dans une chaine XML avec la clause FOR XML et passer la chaine XML à la procedure ensuite l'interroger avec OPENXML. F.S
"Fred BROUARD" a écrit :
deux solutions : construire une table temporaire locale et y palcer tous les pays puis joindre cette table dans la requête :
Au passage on ne parle pas de champ mais de colonnes !
En plus, mieux vaut le BETWEEN
SELECT * FROM MyTable T INNER JOIN MaTableTemporairePays P ON T.MaColonnePays = P.MaColonnePays WHERE MaColonneDate BETWEEN @DateDebut AND @DateFin
sinon, utiliser du SQL dynamique (moins performant)
A +
Sebho a écrit: > Bonjour, > > quelle serait la syntaxe pour passer à une procédure stockée un liste de > paramètres comme ceci avec un des paramètres qui serait un tableau ? > > @DateDebut > @DateFin > @Pays > > SELECT * FROM MyTable WHERE MonChampDate>=@DateDebut AND > MonChampDate<=@DateFin AND MonChampPays LIKE '@Pays' > > Je voudrais pouvoir placer x pays dans la variable @Pays , les variables > peuvent elles être un tableau @Pays() > faut il concaténer un truc du style > > ........AND (MonChampPays Like @pays(0) or MonChampPays Like @pays(1)) > ............ > > comment connaitre le nombre d'éléments dans le tableau ? > > ou alors plutot > > ........AND (MonChampPays IN @Pays) > > comment doit etre renseignée la variable Pays alors ? EXECUTE MyStroredProc > '01-01-2004', '01/01/2005', 'FRANCE,ALLEMAGNE,BELGIQUE' ???? > > quelle est la bonne méthode > > merci bcp pour votre aide > Seb > >
-- Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste 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 ************************ www.datasapiens.com *************************
Steve Kass
Seb,
Il existe quelques solutions très efficaces sans besoin de SQL dynamique, sans besoin d'une table temporaire:
Voilà quelques liens (en anglais) http://www.sommarskog.se/arrays-in-sql.html http://users.drew.edu/skass/sql/ListToTableFunction.sql.txt http://users.drew.edu/skass/sql/ListToTableProc.sql.txt
Steve Kass Drew University
Sebho wrote:
Bonjour,
quelle serait la syntaxe pour passer à une procédure stockée un liste de paramètres comme ceci avec un des paramètres qui serait un tableau ?
@DateDebut @DateFin @Pays
SELECT * FROM MyTable WHERE MonChampDate>=@DateDebut AND MonChampDate<=@DateFin AND MonChampPays LIKE '@Pays'
Je voudrais pouvoir placer x pays dans la variable @Pays , les variables peuvent elles être un tableau @Pays() faut il concaténer un truc du style
........AND (MonChampPays Like @pays(0) or MonChampPays Like @pays(1)) ............
comment connaitre le nombre d'éléments dans le tableau ?
ou alors plutot
........AND (MonChampPays IN @Pays)
comment doit etre renseignée la variable Pays alors ? EXECUTE MyStroredProc '01-01-2004', '01/01/2005', 'FRANCE,ALLEMAGNE,BELGIQUE' ????
quelle est la bonne méthode
merci bcp pour votre aide Seb
Seb,
Il existe quelques solutions très efficaces sans besoin de SQL
dynamique, sans besoin d'une table temporaire:
Voilà quelques liens (en anglais)
http://www.sommarskog.se/arrays-in-sql.html
http://users.drew.edu/skass/sql/ListToTableFunction.sql.txt
http://users.drew.edu/skass/sql/ListToTableProc.sql.txt
Steve Kass
Drew University
Sebho wrote:
Bonjour,
quelle serait la syntaxe pour passer à une procédure stockée un liste de
paramètres comme ceci avec un des paramètres qui serait un tableau ?
@DateDebut
@DateFin
@Pays
SELECT * FROM MyTable WHERE MonChampDate>=@DateDebut AND
MonChampDate<=@DateFin AND MonChampPays LIKE '@Pays'
Je voudrais pouvoir placer x pays dans la variable @Pays , les variables
peuvent elles être un tableau @Pays()
faut il concaténer un truc du style
........AND (MonChampPays Like @pays(0) or MonChampPays Like @pays(1))
............
comment connaitre le nombre d'éléments dans le tableau ?
ou alors plutot
........AND (MonChampPays IN @Pays)
comment doit etre renseignée la variable Pays alors ? EXECUTE MyStroredProc
'01-01-2004', '01/01/2005', 'FRANCE,ALLEMAGNE,BELGIQUE' ????
Il existe quelques solutions très efficaces sans besoin de SQL dynamique, sans besoin d'une table temporaire:
Voilà quelques liens (en anglais) http://www.sommarskog.se/arrays-in-sql.html http://users.drew.edu/skass/sql/ListToTableFunction.sql.txt http://users.drew.edu/skass/sql/ListToTableProc.sql.txt
Steve Kass Drew University
Sebho wrote:
Bonjour,
quelle serait la syntaxe pour passer à une procédure stockée un liste de paramètres comme ceci avec un des paramètres qui serait un tableau ?
@DateDebut @DateFin @Pays
SELECT * FROM MyTable WHERE MonChampDate>=@DateDebut AND MonChampDate<=@DateFin AND MonChampPays LIKE '@Pays'
Je voudrais pouvoir placer x pays dans la variable @Pays , les variables peuvent elles être un tableau @Pays() faut il concaténer un truc du style
........AND (MonChampPays Like @pays(0) or MonChampPays Like @pays(1)) ............
comment connaitre le nombre d'éléments dans le tableau ?
ou alors plutot
........AND (MonChampPays IN @Pays)
comment doit etre renseignée la variable Pays alors ? EXECUTE MyStroredProc '01-01-2004', '01/01/2005', 'FRANCE,ALLEMAGNE,BELGIQUE' ????
quelle est la bonne méthode
merci bcp pour votre aide Seb
News Groups
Je viens de consulter ces liens très interressants, but my english is so...!!! ;-) Donc je cherche des sites équivalents en français, à l'extrême.. aucune traduction existante de ces pages... ???
Merci pour toutes infos,
Thierry.
"Steve Kass" a écrit dans le message de news: #
Seb,
Il existe quelques solutions très efficaces sans besoin de SQL dynamique, sans besoin d'une table temporaire:
Voilà quelques liens (en anglais) http://www.sommarskog.se/arrays-in-sql.html http://users.drew.edu/skass/sql/ListToTableFunction.sql.txt http://users.drew.edu/skass/sql/ListToTableProc.sql.txt
Steve Kass Drew University
Sebho wrote:
>Bonjour, > >quelle serait la syntaxe pour passer à une procédure stockée un liste de >paramètres comme ceci avec un des paramètres qui serait un tableau ? > >@DateDebut >@DateFin >@Pays > >SELECT * FROM MyTable WHERE MonChampDate>=@DateDebut AND >MonChampDate<=@DateFin AND MonChampPays LIKE '@Pays' > >Je voudrais pouvoir placer x pays dans la variable @Pays , les variables >peuvent elles être un tableau @Pays() >faut il concaténer un truc du style > >........AND (MonChampPays Like @pays(0) or MonChampPays Like @pays(1)) >............ > >comment connaitre le nombre d'éléments dans le tableau ? > >ou alors plutot > >........AND (MonChampPays IN @Pays) > >comment doit etre renseignée la variable Pays alors ? EXECUTE
MyStroredProc
>'01-01-2004', '01/01/2005', 'FRANCE,ALLEMAGNE,BELGIQUE' ???? > >quelle est la bonne méthode > >merci bcp pour votre aide >Seb > > > >
Je viens de consulter ces liens très interressants,
but my english is so...!!! ;-)
Donc je cherche des sites équivalents en français,
à l'extrême.. aucune traduction existante de ces pages... ???
Merci pour toutes infos,
Thierry.
"Steve Kass" <skass@drew.edu> a écrit dans le message de news:
#mmvTxBsEHA.2588@TK2MSFTNGP12.phx.gbl...
Seb,
Il existe quelques solutions très efficaces sans besoin de SQL
dynamique, sans besoin d'une table temporaire:
Voilà quelques liens (en anglais)
http://www.sommarskog.se/arrays-in-sql.html
http://users.drew.edu/skass/sql/ListToTableFunction.sql.txt
http://users.drew.edu/skass/sql/ListToTableProc.sql.txt
Steve Kass
Drew University
Sebho wrote:
>Bonjour,
>
>quelle serait la syntaxe pour passer à une procédure stockée un liste de
>paramètres comme ceci avec un des paramètres qui serait un tableau ?
>
>@DateDebut
>@DateFin
>@Pays
>
>SELECT * FROM MyTable WHERE MonChampDate>=@DateDebut AND
>MonChampDate<=@DateFin AND MonChampPays LIKE '@Pays'
>
>Je voudrais pouvoir placer x pays dans la variable @Pays , les variables
>peuvent elles être un tableau @Pays()
>faut il concaténer un truc du style
>
>........AND (MonChampPays Like @pays(0) or MonChampPays Like @pays(1))
>............
>
>comment connaitre le nombre d'éléments dans le tableau ?
>
>ou alors plutot
>
>........AND (MonChampPays IN @Pays)
>
>comment doit etre renseignée la variable Pays alors ? EXECUTE
MyStroredProc
>'01-01-2004', '01/01/2005', 'FRANCE,ALLEMAGNE,BELGIQUE' ????
>
>quelle est la bonne méthode
>
>merci bcp pour votre aide
>Seb
>
>
>
>
Je viens de consulter ces liens très interressants, but my english is so...!!! ;-) Donc je cherche des sites équivalents en français, à l'extrême.. aucune traduction existante de ces pages... ???
Merci pour toutes infos,
Thierry.
"Steve Kass" a écrit dans le message de news: #
Seb,
Il existe quelques solutions très efficaces sans besoin de SQL dynamique, sans besoin d'une table temporaire:
Voilà quelques liens (en anglais) http://www.sommarskog.se/arrays-in-sql.html http://users.drew.edu/skass/sql/ListToTableFunction.sql.txt http://users.drew.edu/skass/sql/ListToTableProc.sql.txt
Steve Kass Drew University
Sebho wrote:
>Bonjour, > >quelle serait la syntaxe pour passer à une procédure stockée un liste de >paramètres comme ceci avec un des paramètres qui serait un tableau ? > >@DateDebut >@DateFin >@Pays > >SELECT * FROM MyTable WHERE MonChampDate>=@DateDebut AND >MonChampDate<=@DateFin AND MonChampPays LIKE '@Pays' > >Je voudrais pouvoir placer x pays dans la variable @Pays , les variables >peuvent elles être un tableau @Pays() >faut il concaténer un truc du style > >........AND (MonChampPays Like @pays(0) or MonChampPays Like @pays(1)) >............ > >comment connaitre le nombre d'éléments dans le tableau ? > >ou alors plutot > >........AND (MonChampPays IN @Pays) > >comment doit etre renseignée la variable Pays alors ? EXECUTE
MyStroredProc
>'01-01-2004', '01/01/2005', 'FRANCE,ALLEMAGNE,BELGIQUE' ???? > >quelle est la bonne méthode > >merci bcp pour votre aide >Seb > > > >
News Groups
je me permet de relancer le post au cas où ..?
Merci, Thierry.
"News Groups" a écrit dans le message de news: 416d2598$0$7835$
Je viens de consulter ces liens très interressants, but my english is so...!!! ;-) Donc je cherche des sites équivalents en français, à l'extrême.. aucune traduction existante de ces pages... ???
Merci pour toutes infos,
Thierry.
"Steve Kass" a écrit dans le message de news: # > Seb, > > Il existe quelques solutions très efficaces sans besoin de SQL > dynamique, sans besoin d'une table temporaire: > > Voilà quelques liens (en anglais) > http://www.sommarskog.se/arrays-in-sql.html > http://users.drew.edu/skass/sql/ListToTableFunction.sql.txt > http://users.drew.edu/skass/sql/ListToTableProc.sql.txt > > Steve Kass > Drew University > > Sebho wrote: > > >Bonjour, > > > >quelle serait la syntaxe pour passer à une procédure stockée un liste
de
> >paramètres comme ceci avec un des paramètres qui serait un tableau ? > > > >@DateDebut > >@DateFin > >@Pays > > > >SELECT * FROM MyTable WHERE MonChampDate>=@DateDebut AND > >MonChampDate<=@DateFin AND MonChampPays LIKE '@Pays' > > > >Je voudrais pouvoir placer x pays dans la variable @Pays , les
variables
> >peuvent elles être un tableau @Pays() > >faut il concaténer un truc du style > > > >........AND (MonChampPays Like @pays(0) or MonChampPays Like @pays(1)) > >............ > > > >comment connaitre le nombre d'éléments dans le tableau ? > > > >ou alors plutot > > > >........AND (MonChampPays IN @Pays) > > > >comment doit etre renseignée la variable Pays alors ? EXECUTE MyStroredProc > >'01-01-2004', '01/01/2005', 'FRANCE,ALLEMAGNE,BELGIQUE' ???? > > > >quelle est la bonne méthode > > > >merci bcp pour votre aide > >Seb > > > > > > > >
je me permet de relancer le post
au cas où ..?
Merci,
Thierry.
"News Groups" <bjt_nwsgrp@yahoo.fr> a écrit dans le message de news:
416d2598$0$7835$626a14ce@news.free.fr...
Je viens de consulter ces liens très interressants,
but my english is so...!!! ;-)
Donc je cherche des sites équivalents en français,
à l'extrême.. aucune traduction existante de ces pages... ???
Merci pour toutes infos,
Thierry.
"Steve Kass" <skass@drew.edu> a écrit dans le message de news:
#mmvTxBsEHA.2588@TK2MSFTNGP12.phx.gbl...
> Seb,
>
> Il existe quelques solutions très efficaces sans besoin de SQL
> dynamique, sans besoin d'une table temporaire:
>
> Voilà quelques liens (en anglais)
> http://www.sommarskog.se/arrays-in-sql.html
> http://users.drew.edu/skass/sql/ListToTableFunction.sql.txt
> http://users.drew.edu/skass/sql/ListToTableProc.sql.txt
>
> Steve Kass
> Drew University
>
> Sebho wrote:
>
> >Bonjour,
> >
> >quelle serait la syntaxe pour passer à une procédure stockée un liste
de
> >paramètres comme ceci avec un des paramètres qui serait un tableau ?
> >
> >@DateDebut
> >@DateFin
> >@Pays
> >
> >SELECT * FROM MyTable WHERE MonChampDate>=@DateDebut AND
> >MonChampDate<=@DateFin AND MonChampPays LIKE '@Pays'
> >
> >Je voudrais pouvoir placer x pays dans la variable @Pays , les
variables
> >peuvent elles être un tableau @Pays()
> >faut il concaténer un truc du style
> >
> >........AND (MonChampPays Like @pays(0) or MonChampPays Like @pays(1))
> >............
> >
> >comment connaitre le nombre d'éléments dans le tableau ?
> >
> >ou alors plutot
> >
> >........AND (MonChampPays IN @Pays)
> >
> >comment doit etre renseignée la variable Pays alors ? EXECUTE
MyStroredProc
> >'01-01-2004', '01/01/2005', 'FRANCE,ALLEMAGNE,BELGIQUE' ????
> >
> >quelle est la bonne méthode
> >
> >merci bcp pour votre aide
> >Seb
> >
> >
> >
> >
"News Groups" a écrit dans le message de news: 416d2598$0$7835$
Je viens de consulter ces liens très interressants, but my english is so...!!! ;-) Donc je cherche des sites équivalents en français, à l'extrême.. aucune traduction existante de ces pages... ???
Merci pour toutes infos,
Thierry.
"Steve Kass" a écrit dans le message de news: # > Seb, > > Il existe quelques solutions très efficaces sans besoin de SQL > dynamique, sans besoin d'une table temporaire: > > Voilà quelques liens (en anglais) > http://www.sommarskog.se/arrays-in-sql.html > http://users.drew.edu/skass/sql/ListToTableFunction.sql.txt > http://users.drew.edu/skass/sql/ListToTableProc.sql.txt > > Steve Kass > Drew University > > Sebho wrote: > > >Bonjour, > > > >quelle serait la syntaxe pour passer à une procédure stockée un liste
de
> >paramètres comme ceci avec un des paramètres qui serait un tableau ? > > > >@DateDebut > >@DateFin > >@Pays > > > >SELECT * FROM MyTable WHERE MonChampDate>=@DateDebut AND > >MonChampDate<=@DateFin AND MonChampPays LIKE '@Pays' > > > >Je voudrais pouvoir placer x pays dans la variable @Pays , les
variables
> >peuvent elles être un tableau @Pays() > >faut il concaténer un truc du style > > > >........AND (MonChampPays Like @pays(0) or MonChampPays Like @pays(1)) > >............ > > > >comment connaitre le nombre d'éléments dans le tableau ? > > > >ou alors plutot > > > >........AND (MonChampPays IN @Pays) > > > >comment doit etre renseignée la variable Pays alors ? EXECUTE MyStroredProc > >'01-01-2004', '01/01/2005', 'FRANCE,ALLEMAGNE,BELGIQUE' ???? > > > >quelle est la bonne méthode > > > >merci bcp pour votre aide > >Seb > > > > > > > >