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

Must declare the table variable @variable

2 réponses
Avatar
Christian
Bonjour à tous,

Voici le principe, j'ai une table qui stocke une liste de table dans
lesquelles je dois effectué la même requete (un SELECT).
J'ai donc un curseur qui parcours cette liste, sauf que lorsque je fais:
select * from @tables (ou @tables est la variable de mon curseur ou sont
stockés les noms de mes tables), j'ai cette erreur :
Must declare the table variable @table
J'ai essayé avec du sql dynamique, même erreur.

Voici le code :


declare @tables varchar(50)

declare Cursor_name CURSOR FOR
SELECT Nom_tables from ma_table

OPEN Cursor_recence

FETCH NEXT FROM Cursor_name INTO @tables

WHILE @@FETCH_STATUS = 0
BEGIN

SELECT distinct *
FROM @tables

END

CLOSE Cursor_name
DEALLOCATE Cursor_name

Merci pour votre aide,

Christian

2 réponses

Avatar
jeje
"Christian" a écrit dans le
message de news:
[...]
Voici le code :



Essayez donc ça :

declare @tables varchar(50)
declare Cursor_name CURSOR FOR
SELECT Nom_tables from ma_table

OPEN Cursor_recence

FETCH NEXT FROM Cursor_name INTO @tables

WHILE @@FETCH_STATUS = 0
BEGIN

EXEC('SELECT distinct * FROM ' + @tables)
FETCH NEXT FROM Cursor_name INTO @tables


END

CLOSE Cursor_name
DEALLOCATE Cursor_name

--
Jérôme
Avatar
Christian
excellent, ca fonctionne très bien.

Merci bcp...



"jeje" a écrit :

"Christian" a écrit dans le
message de news:
[...]
> Voici le code :

Essayez donc ça :

declare @tables varchar(50)
declare Cursor_name CURSOR FOR
SELECT Nom_tables from ma_table

OPEN Cursor_recence

FETCH NEXT FROM Cursor_name INTO @tables

WHILE @@FETCH_STATUS = 0
BEGIN

EXEC('SELECT distinct * FROM ' + @tables)
FETCH NEXT FROM Cursor_name INTO @tables


END

CLOSE Cursor_name
DEALLOCATE Cursor_name

--
Jérôme