2009-07-31 8 views
0

J'ai un script avec une instruction Alter Column qui change le type de données d'un Bigint à un Varchar. Immédiatement après, je dois appeler Substring() sur cette colonne.Comment puis-je modifier le type de données d'une colonne, puis effectuer des actions sur ce nouveau type dans le même script dans SQL Server?

Malheureusement, le vérificateur de syntaxe de SQL Server ne me laisse pas faire cela. Je dois ajouter une instruction 'GO' pour séparer les commandes. Le problème avec ceci est, j'ai également besoin d'inclure IF -conditions dans mon script, et l'ajout d'une instruction GO va casser le bloc IF afin qu'il n'existe plus dans la même portée et casse la logique de mon code.

Est-il possible de le faire:

Alter Table MyTable 
Alter Column MyColumn varchar(25) 

GO 

Update MyTable 
Set MyColumn = Substring(MyColumn, 0, 5) 

sans utiliser le mot GO?

+0

Êtes-vous absolument certain que vous devez modifier cette table? Pourquoi ne pas convertir BigInt en Varchar, puis utiliser la sous-chaîne? – lexu

+0

Je dois absolument changer la table. Je n'ai aucun moyen de m'en sortir. –

Répondre

2

Comme ceci:

Alter Table MyTable 
Alter Column MyColumn varchar(25) 

EXEC('Update MyTable 
Set MyColumn = Substring(MyColumn, 0, 5)'); 
Questions connexes