OVH Cloud OVH Cloud

SELECT INTO conditionnel

5 réponses
Avatar
toto
bonjour,

J'ai un petit probleme dans une SP.

Je dois faire un SELECT INTO qui depend de certains arguments.

Je voulais donc faire qq chose du genre :

IF test
BEGIN
SELECT ..
INTO #TMP
FROM ...
WHERE condition1
END
ElsE
BEGIN
SELECT ..
INTO #TMP
FROM ...
WHERE condition2
END

à la verif syntaxique, il me dit qu'un objet #TMP existe deja

je modifie un peu en gardant le premier select intact mais en placant le
second dans un EXEC

IF test
BEGIN
SELECT ..
INTO #TMP
FROM ...
WHERE condition1
END
ElsE
BEGIN
EXEC ('SELECT ..
INTO #TMP
FROM ...
WHERE condition2')
END

la verif syntaxique est ok mais le probleme est que maintenant lorsque la
condition 2 est reunie, il me dit à l'execution que #TMP n'existe pas ; il a
du faire son EXEC dans un environnement different .
J'ai egalement essayé de mettre les 2 select into dans un exec mais rien n'y
fait.

Ma question est donc :
comment definir un select into conditionnel dans une table temporaire et
pouvoir la reutiliser apres.

Merci pour votre aide pour un newbie en T-SQL

Cordialement

5 réponses

Avatar
loccitan
select * into #TMP from (select .. from .. WHERe condition1 union select
.. from .. WHERe condition2) bb
A+pascal


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.656 / Virus Database: 421 - Release Date: 09/04/2004
Avatar
TedIF
SELECT ..
INTO #TMP
FROM ...
WHERE (test and condition1) or Condition2

"toto" a écrit dans le message de
news:%
bonjour,

J'ai un petit probleme dans une SP.

Je dois faire un SELECT INTO qui depend de certains arguments.

Je voulais donc faire qq chose du genre :

IF test
BEGIN
SELECT ..
INTO #TMP
FROM ...
WHERE condition1
END
ElsE
BEGIN
SELECT ..
INTO #TMP
FROM ...
WHERE condition2
END

à la verif syntaxique, il me dit qu'un objet #TMP existe deja

je modifie un peu en gardant le premier select intact mais en placant le
second dans un EXEC

IF test
BEGIN
SELECT ..
INTO #TMP
FROM ...
WHERE condition1
END
ElsE
BEGIN
EXEC ('SELECT ..
INTO #TMP
FROM ...
WHERE condition2')
END

la verif syntaxique est ok mais le probleme est que maintenant lorsque la
condition 2 est reunie, il me dit à l'execution que #TMP n'existe pas ; il


a
du faire son EXEC dans un environnement different .
J'ai egalement essayé de mettre les 2 select into dans un exec mais rien


n'y
fait.

Ma question est donc :
comment definir un select into conditionnel dans une table temporaire et
pouvoir la reutiliser apres.

Merci pour votre aide pour un newbie en T-SQL

Cordialement





Avatar
toto
merci pour vos réponses, qui permettent de contourner le probleme (en
utilisant une requete unique).
cependant, si ma requete n'avait pas pu etre "unifiée" (cad obligation de
faire 2 requetes), comment auriez vous fait ?

Merci


"TedIF" a écrit dans le message de news:


SELECT ..
INTO #TMP
FROM ...
WHERE (test and condition1) or Condition2

"toto" a écrit dans le message de
news:%
> bonjour,
>
> J'ai un petit probleme dans une SP.
>
> Je dois faire un SELECT INTO qui depend de certains arguments.
>
> Je voulais donc faire qq chose du genre :
>
> IF test
> BEGIN
> SELECT ..
> INTO #TMP
> FROM ...
> WHERE condition1
> END
> ElsE
> BEGIN
> SELECT ..
> INTO #TMP
> FROM ...
> WHERE condition2
> END
>
> à la verif syntaxique, il me dit qu'un objet #TMP existe deja
>
> je modifie un peu en gardant le premier select intact mais en placant le
> second dans un EXEC
>
> IF test
> BEGIN
> SELECT ..
> INTO #TMP
> FROM ...
> WHERE condition1
> END
> ElsE
> BEGIN
> EXEC ('SELECT ..
> INTO #TMP
> FROM ...
> WHERE condition2')
> END
>
> la verif syntaxique est ok mais le probleme est que maintenant lorsque


la
> condition 2 est reunie, il me dit à l'execution que #TMP n'existe pas ;


il
a
> du faire son EXEC dans un environnement different .
> J'ai egalement essayé de mettre les 2 select into dans un exec mais rien
n'y
> fait.
>
> Ma question est donc :
> comment definir un select into conditionnel dans une table temporaire et
> pouvoir la reutiliser apres.
>
> Merci pour votre aide pour un newbie en T-SQL
>
> Cordialement
>
>
>




Avatar
bruno reiter [MVP]
éventuellement ##TMP, si on ne peut exécuter la SP de manière concurrente

br

"toto" wrote in message
news:
merci pour vos réponses, qui permettent de contourner le probleme (en
utilisant une requete unique).
cependant, si ma requete n'avait pas pu etre "unifiée" (cad obligation de
faire 2 requetes), comment auriez vous fait ?

Merci


"TedIF" a écrit dans le message de news:

>
> SELECT ..
> INTO #TMP
> FROM ...
> WHERE (test and condition1) or Condition2
>
> "toto" a écrit dans le message de
> news:%
> > bonjour,
> >
> > J'ai un petit probleme dans une SP.
> >
> > Je dois faire un SELECT INTO qui depend de certains arguments.
> >
> > Je voulais donc faire qq chose du genre :
> >
> > IF test
> > BEGIN
> > SELECT ..
> > INTO #TMP
> > FROM ...
> > WHERE condition1
> > END
> > ElsE
> > BEGIN
> > SELECT ..
> > INTO #TMP
> > FROM ...
> > WHERE condition2
> > END
> >
> > à la verif syntaxique, il me dit qu'un objet #TMP existe deja
> >
> > je modifie un peu en gardant le premier select intact mais en placant


le
> > second dans un EXEC
> >
> > IF test
> > BEGIN
> > SELECT ..
> > INTO #TMP
> > FROM ...
> > WHERE condition1
> > END
> > ElsE
> > BEGIN
> > EXEC ('SELECT ..
> > INTO #TMP
> > FROM ...
> > WHERE condition2')
> > END
> >
> > la verif syntaxique est ok mais le probleme est que maintenant lorsque
la
> > condition 2 est reunie, il me dit à l'execution que #TMP n'existe pas


;
il
> a
> > du faire son EXEC dans un environnement different .
> > J'ai egalement essayé de mettre les 2 select into dans un exec mais


rien
> n'y
> > fait.
> >
> > Ma question est donc :
> > comment definir un select into conditionnel dans une table temporaire


et
> > pouvoir la reutiliser apres.
> >
> > Merci pour votre aide pour un newbie en T-SQL
> >
> > Cordialement
> >
> >
> >
>
>




Avatar
lionelp
Bonjour,

create table #tempo

if condition
insert into #tempo select1
else
insert into #tempo select2

Sinon le cas où l'on doit faire 2 requêtes doit être assez
rare.

Cordialement,
LionelP

-----Message d'origine-----
merci pour vos réponses, qui permettent de contourner le


probleme (en
utilisant une requete unique).
cependant, si ma requete n'avait pas pu etre "unifiée"


(cad obligation de
faire 2 requetes), comment auriez vous fait ?

Merci


"TedIF" a écrit dans le message de news:


SELECT ..
INTO #TMP
FROM ...
WHERE (test and condition1) or Condition2

"toto" a écrit dans le message de
news:%
> bonjour,
>
> J'ai un petit probleme dans une SP.
>
> Je dois faire un SELECT INTO qui depend de certains




arguments.
>
> Je voulais donc faire qq chose du genre :
>
> IF test
> BEGIN
> SELECT ..
> INTO #TMP
> FROM ...
> WHERE condition1
> END
> ElsE
> BEGIN
> SELECT ..
> INTO #TMP
> FROM ...
> WHERE condition2
> END
>
> à la verif syntaxique, il me dit qu'un objet #TMP




existe deja
>
> je modifie un peu en gardant le premier select intact




mais en placant le
> second dans un EXEC
>
> IF test
> BEGIN
> SELECT ..
> INTO #TMP
> FROM ...
> WHERE condition1
> END
> ElsE
> BEGIN
> EXEC ('SELECT ..
> INTO #TMP
> FROM ...
> WHERE condition2')
> END
>
> la verif syntaxique est ok mais le probleme est que




maintenant lorsque
la
> condition 2 est reunie, il me dit à l'execution que




#TMP n'existe pas ;
il
a
> du faire son EXEC dans un environnement different .
> J'ai egalement essayé de mettre les 2 select into




dans un exec mais rien
n'y
> fait.
>
> Ma question est donc :
> comment definir un select into conditionnel dans une




table temporaire et
> pouvoir la reutiliser apres.
>
> Merci pour votre aide pour un newbie en T-SQL
>
> Cordialement
>
>
>






.