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

integrer une variable dans une requete

4 réponses
Avatar
laetitia
Bonjour,

Je cherche à créer une procedure stockée qui va réindexer une base placée en
argument : exec sp_reindexBase 'DatabaseName'.

Dans le code de ma procedure, j'aimerais integrer cette argument dans la
requete SQL mais à chaque fois il me retourne une erreur :
USE @DatabaseName
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'

De la meme façon,
SELECT TABLE_NAME FROM @DatabaseName.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
ne marche pas.

Je débute en SQL et je ne sais pas comment utiliser mon argument. Est-ce que
quelqu'un a déjà intégrer des variables dans des requetes SQL ?

Merci par avance
Laetitia

4 réponses

Avatar
Jean-Yves
Bonjour ,

Tu peux faire comme ceci :

...
Declare @TxtSQL varchar(500)
set @TxtSQL='SELECT TABLE_NAME FROM ' + @DataBaseName +
'.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = ''BASE TABLE'''
exec(@TxtSQL)
...

Jean-Yves

"laetitia" a écrit dans le message de
news:
Bonjour,

Je cherche à créer une procedure stockée qui va réindexer une base placée


en
argument : exec sp_reindexBase 'DatabaseName'.

Dans le code de ma procedure, j'aimerais integrer cette argument dans la
requete SQL mais à chaque fois il me retourne une erreur :
USE @DatabaseName
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'

De la meme façon,
SELECT TABLE_NAME FROM @DatabaseName.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
ne marche pas.

Je débute en SQL et je ne sais pas comment utiliser mon argument. Est-ce


que
quelqu'un a déjà intégrer des variables dans des requetes SQL ?

Merci par avance
Laetitia



Avatar
laetitia
ça marche mais seulement si j'execute directemement la requete.

En fait je veux recuperer le resultat de ma requete dans un cursor.
DECLARE TableCursor CURSOR FOR
SELECT TABLE_NAME FROM @DocbaseName.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'

Si je fais :
DECLARE TableCursor CURSOR
FOR EXECUTE (@TxtSQL)
=> j'obtiens une erreur. Je ne sais pas si ma syntaxe est correcte


"Jean-Yves" a écrit :

Bonjour ,

Tu peux faire comme ceci :

....
Declare @TxtSQL varchar(500)
set @TxtSQL='SELECT TABLE_NAME FROM ' + @DataBaseName +
'.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = ''BASE TABLE'''
exec(@TxtSQL)
....

Jean-Yves

"laetitia" a écrit dans le message de
news:
> Bonjour,
>
> Je cherche à créer une procedure stockée qui va réindexer une base placée
en
> argument : exec sp_reindexBase 'DatabaseName'.
>
> Dans le code de ma procedure, j'aimerais integrer cette argument dans la
> requete SQL mais à chaque fois il me retourne une erreur :
> USE @DatabaseName
> SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
> WHERE TABLE_TYPE = 'BASE TABLE'
>
> De la meme façon,
> SELECT TABLE_NAME FROM @DatabaseName.INFORMATION_SCHEMA.TABLES
> WHERE TABLE_TYPE = 'BASE TABLE'
> ne marche pas.
>
> Je débute en SQL et je ne sais pas comment utiliser mon argument. Est-ce
que
> quelqu'un a déjà intégrer des variables dans des requetes SQL ?
>
> Merci par avance
> Laetitia
>





Avatar
Jean-Yves
Il faut intégrer le déclare cursor dans l'execute :
...
exec('DECLARE TableCursor CURSOR FOR ' + @TxtSQL)
OPENCURSOR TableCursor
...


"laetitia" a écrit dans le message de
news:
ça marche mais seulement si j'execute directemement la requete.

En fait je veux recuperer le resultat de ma requete dans un cursor.
DECLARE TableCursor CURSOR FOR
SELECT TABLE_NAME FROM @DocbaseName.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'

Si je fais :
DECLARE TableCursor CURSOR
FOR EXECUTE (@TxtSQL)
=> j'obtiens une erreur. Je ne sais pas si ma syntaxe est correcte


"Jean-Yves" a écrit :

> Bonjour ,
>
> Tu peux faire comme ceci :
>
> ....
> Declare @TxtSQL varchar(500)
> set @TxtSQL='SELECT TABLE_NAME FROM ' + @DataBaseName +
> '.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = ''BASE TABLE'''
> exec(@TxtSQL)
> ....
>
> Jean-Yves
>
> "laetitia" a écrit dans le message


de
> news:
> > Bonjour,
> >
> > Je cherche à créer une procedure stockée qui va réindexer une base


placée
> en
> > argument : exec sp_reindexBase 'DatabaseName'.
> >
> > Dans le code de ma procedure, j'aimerais integrer cette argument dans


la
> > requete SQL mais à chaque fois il me retourne une erreur :
> > USE @DatabaseName
> > SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
> > WHERE TABLE_TYPE = 'BASE TABLE'
> >
> > De la meme façon,
> > SELECT TABLE_NAME FROM @DatabaseName.INFORMATION_SCHEMA.TABLES
> > WHERE TABLE_TYPE = 'BASE TABLE'
> > ne marche pas.
> >
> > Je débute en SQL et je ne sais pas comment utiliser mon argument.


Est-ce
> que
> > quelqu'un a déjà intégrer des variables dans des requetes SQL ?
> >
> > Merci par avance
> > Laetitia
> >
>
>
>


Avatar
laetitia
Merci. ça marche beaucoup mieux comme ça

"Jean-Yves" a écrit :

Il faut intégrer le déclare cursor dans l'execute :
....
exec('DECLARE TableCursor CURSOR FOR ' + @TxtSQL)
OPENCURSOR TableCursor
....


"laetitia" a écrit dans le message de
news:
> ça marche mais seulement si j'execute directemement la requete.
>
> En fait je veux recuperer le resultat de ma requete dans un cursor.
> DECLARE TableCursor CURSOR FOR
> SELECT TABLE_NAME FROM @DocbaseName.INFORMATION_SCHEMA.TABLES
> WHERE TABLE_TYPE = 'BASE TABLE'
>
> Si je fais :
> DECLARE TableCursor CURSOR
> FOR EXECUTE (@TxtSQL)
> => j'obtiens une erreur. Je ne sais pas si ma syntaxe est correcte
>
>
> "Jean-Yves" a écrit :
>
> > Bonjour ,
> >
> > Tu peux faire comme ceci :
> >
> > ....
> > Declare @TxtSQL varchar(500)
> > set @TxtSQL='SELECT TABLE_NAME FROM ' + @DataBaseName +
> > '.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = ''BASE TABLE'''
> > exec(@TxtSQL)
> > ....
> >
> > Jean-Yves
> >
> > "laetitia" a écrit dans le message
de
> > news:
> > > Bonjour,
> > >
> > > Je cherche à créer une procedure stockée qui va réindexer une base
placée
> > en
> > > argument : exec sp_reindexBase 'DatabaseName'.
> > >
> > > Dans le code de ma procedure, j'aimerais integrer cette argument dans
la
> > > requete SQL mais à chaque fois il me retourne une erreur :
> > > USE @DatabaseName
> > > SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
> > > WHERE TABLE_TYPE = 'BASE TABLE'
> > >
> > > De la meme façon,
> > > SELECT TABLE_NAME FROM @DatabaseName.INFORMATION_SCHEMA.TABLES
> > > WHERE TABLE_TYPE = 'BASE TABLE'
> > > ne marche pas.
> > >
> > > Je débute en SQL et je ne sais pas comment utiliser mon argument.
Est-ce
> > que
> > > quelqu'un a déjà intégrer des variables dans des requetes SQL ?
> > >
> > > Merci par avance
> > > Laetitia
> > >
> >
> >
> >