-
Transact SQL - Curseurs
Salut je développe une procédure stockée en transact sql
le script est simple, je récupère le nom des colonnes d'une table
et ensuite je veux faire afficher les valeur propre a chaque colonne : j'ai besoin de deux curseurs
voila le script
create procedure UPDATE_CUSTOMER
AS
DECLARE
@name_column varchar(30),
@valeur_column_adonix varchar(50),
@valeur_column_alloga varchar(50)
DECLARE MyCursor CURSOR
FOR
select name from syscolumns where id in (select id from sysobjects where name='ADONIX_CUSTOMER')
OPEN MyCursor
FETCH MyCursor INTO @name_column
WHILE @@fetch_Status = 0
BEGIN
--print @name_column
DECLARE MyCursor2 CURSOR
FOR
select @name_column from ADONIX_CUSTOMER
OPEN MyCursor2
FETCH MyCursor2 INTO @valeur_column_adonix
WHILE @@fetch_Status = 0
BEGIN
print @valeur_column_adonix
FETCH MyCursor2 INTO @valeur_column_adonix
END
CLOSE myCursor2
DEALLOCATE myCursor2
FETCH MyCursor INTO @name_column
END
CLOSE myCursor
DEALLOCATE myCursor
le problème c'est qu'il m'affiche le nom de la colonne et non pas les valeurs enregistrées dans cette colonne.
Il aime pas le
select @name_column from ADONIX_CUSTOMER
quelqu'un a une idée ?
Merci !
-
Code:
select @ma_variable from ma_table
ne peut pas fonctionner.
Une affectation de variable se fera par
Code:
select @ma_variable=ma_colonne from ma_table.
Mais toi tu cherches à executer une requête SQL qui est construite d'après une variable. C'est du SQL dynamique.
Il faut faire quelque chose comme
Code:
EXECUTE IMMEDIATE 'select '+@name_column +' from ADONIX_CUSTOMER '
Mais je connais mal le SQL dynamique sous SQL Server et il me semble que EXECUTE IMMEDIATE ne sait pas récupérer des lignes de résultats. Peut-être avec un curseur dynamique ? (En fait je sais faire cela sous Oracle mais pas sous SQL Server). Je laisse la parole aux experts SQL dynamique sous SQL Server.
-
résolu ? C'était quoi la solution ?
ça peut servir à d'autres...