OVH Cloud OVH Cloud

Nom de Table dynamique dans un cursor

1 réponse
Avatar
LeCaméléon
bonjour,

j'ai une procédure stockée qui contient le bout de code ci-dessous
j'ai un curseur sur une table dynnamique.
en général avec des SELECT j'utilise EXEC pour concaténer les variabbles
mais là je sèche.
comment faire sachant que le nom de ma table "T2006092_CodeSemaine" est
dynamique ??

-- Declare the variables to store the values returned by FETCH.

DECLARE @jour varchar(20), @semaine varchar(5)

DECLARE date_cursor CURSOR FOR

SELECT CONVERT(varchar(10),jour,103),semaine FROM T2006092_CodeSemaine

WHERE Semaine > 0

ORDER BY jour

OPEN date_cursor

-- Perform the first fetch and store the values in variables.

-- Note: The variables are in the same order as the columns

-- in the SELECT statement.

FETCH NEXT FROM date_cursor

INTO @jour, @semaine

-- Check @@FETCH_STATUS to see if there are any more rows to fetch.

WHILE @@FETCH_STATUS = 0

BEGIN

-- Concatenate and display the current values in the variables.

--PRINT 'jour / semaine : ' + @jour + ' / ' + @semaine

set @sql = @sql + ', ['+@jour+'] int '

-- This is executed as long as the previous fetch succeeds.

FETCH NEXT FROM date_cursor

INTO @jour, @semaine

END

CLOSE date_cursor

DEALLOCATE date_cursor



Merci

Franck

1 réponse

Avatar
zoltix
LeCaméléon a écrit :
bonjour,

j'ai une procédure stockée qui contient le bout de code ci-dessous
j'ai un curseur sur une table dynnamique.
en général avec des SELECT j'utilise EXEC pour concaténer les variabbles
mais là je sèche.
comment faire sachant que le nom de ma table "T2006092_CodeSemaine" est
dynamique ??

-- Declare the variables to store the values returned by FETCH.

DECLARE @jour varchar(20), @semaine varchar(5)

DECLARE date_cursor CURSOR FOR

SELECT CONVERT(varchar(10),jour,103),semaine FROM T2006092_CodeSemaine

WHERE Semaine > 0

ORDER BY jour

OPEN date_cursor

-- Perform the first fetch and store the values in variables.

-- Note: The variables are in the same order as the columns

-- in the SELECT statement.

FETCH NEXT FROM date_cursor

INTO @jour, @semaine

-- Check @@FETCH_STATUS to see if there are any more rows to fetch.




set @sql = null
WHILE @@FETCH_STATUS = 0

BEGIN

-- Concatenate and display the current values in the variables.

--PRINT 'jour / semaine : ' + @jour + ' / ' + @semaine

set @sql = @sql + ', ['+@jour+'] int '

-- This is executed as long as the previous fetch succeeds.

FETCH NEXT FROM date_cursor

INTO @jour, @semaine

END

CLOSE date_cursor

DEALLOCATE date_cursor



Merci

Franck




je n'ai pas bien compris ......... une table dynamique ......... Qu'est
ce c'est pout toi ?
Ceci dit je vois une erreur dans ton code........
Ta variable @sql n'est pas initialisé.......
Car si @sql = null
donc set @sql = @sql + blabla alors @sql = Null