2017-03-16 1 views
0

Comme mentionné dans ce lien Mapping dynamic column names in sql servernoms de cartographie de colonne dynamique dans SQL Server où nombre entier variable dynamique

Je veux générer des noms de colonnes comme col_1, col_2 ... .Le paramètre @num est de type entier.

J'ai requête comme suit:

DECLARE @num int = 15; 
DECLARE @COL VARCHAR(50) = [email protected]; 

UPDATE table_tblName 
SET @COL = <some value> 
WHERE <condition> 
+0

Vous pouvez utiliser la fonction CAST pour le convertir en varchar puis ajouter, avez-vous essayé? – Zeus

+0

J'ai essayé. Ça n'a pas marché. –

Répondre

1

Cette déclaration de mise à jour ne peut pas fonctionner comme il est. Vous ne pouvez pas paramétrer les identifiants dans Sql.

Lorsque vous écrivez quelque chose comme ceci:

UPDATE table_tblName SET @COL=<some value> WHERE <condition>, 

Ce qui se passe est que la menace Sql Server comme deux déclarations différentes:

UPDATE table_tblName 

Et

SET @COL=<some value> WHERE <condition> 

Depuis la déclaration de mise à jour ne contient pas la clause SET, c'est fondamentalement un no-op.

Pour pouvoir paramétrer des identifiants vous devez utiliser SQL dynamique -

DECLARE @num int = 15; 
DECLARE @COL VARCHAR(50) = col_ + @step; 
DECLARE @Sql VARCHAR(200) = 'UPDATE table_tblName SET ' + @COL + '=<some value> WHERE <condition>' 
EXEC(@Sql) 

See for yourself on rextester

+0

Oui, ça marche bien. –

+0

[Glad pour aider: -)] (http://meta.stackoverflow.com/questions/291325/how-to-show-appreciation-to-a-user-on-stackoverflow/291327#291327) –

+0

Merci pour le Aidez-moi ! –