Je dois mettre à jour des occurrences sélectionnées dans différentes tables de l'attribut [ISD_ID], comment puis-je accomplir cela?mettre à jour les attributs d'enregistrement dans plusieurs tables
Je peux saisir l'ensemble des tables qui possèdent les dossiers que je cherche avec cette déclaration:
SELECT c1.TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS c1
INNER JOIN information_schema.COLUMNS c2
ON c1.TABLE_NAME = c2.TABLE_NAME
WHERE c1.COLUMN_NAME LIKE '%isd%id%' and c2.column_name LIKE '%schooldistrict%id%'
Alors maintenant, j'ai un ensemble de noms de table que je voudrais itérer, la mise à jour enregistre si nécessaire.
Par une suggestion dans un autre article, j'ai lu sur SQL dynamique. Donc, je pourrais faire quelque chose comme EXECUTE IMMEDIATE: ('update' + @tablename + ' set ISD_ID=37 where SchoolDistrictID=46')
.
Ma question, alors, est: comment puis-je parcourir mes noms de table et les remplacer dans l'instruction ci-dessus comme la variable @tablename
, de sorte que je peux mettre à jour les valeurs dans chaque table? J'ai également la possibilité d'utiliser .NET et SSIS si besoin est.
Merci d'avance; Je ne suis pas très compétent avec SQL et j'apprécie l'opportunité d'apprendre.
Suite à votre suggestion, j'obtiens l'erreur ** doit déclarer la variable scalaire ** à ** ligne de conduite @tablename ** quand j'Execute: 'DECLARE @MyTable AS TABLE ( Table_nm NVARCHAR (128) NULL ) DECLARE @tablename AS NVARCHAR (128) @myDynamicSQL DECLARE AS TEXT = 'update' + @tablename + 'set ISD_ID = 37 où SchoolDistrictID = 46' TOUT (SELECT Table_nm dE @MyTable ) IS NOT NULL BEGIN SET @tablename = [ICI I OBTENIR UNE ERREUR ->] @ MyTable.Table_nm EXECUTE IMMEDIATE @myDynamicSQL CONTINUER FIN GO' – ElderJedi
@ SebastianVal - vous devez saisir le paramètre Table_nm dans une variable. Donc, quelque chose comme ça fonctionnerait: 'SELECT TOP 1 @ tablename = table_nm de @ myTable'. Maintenant, je ferais aussi attention de vous assurer de supprimer l'enregistrement de @mytable lorsque vous en avez fini avec, ou d'utiliser un compteur pour empêcher une boucle sans fin. – dawebber