Déclarer une variable de la liste dans la procédure stockée SQL Server
Je voudrais supprimer les données de plusieurs tables avec les mêmes conditions (clause where) pour chaque instruction delete.
delete from tblA where id in (select x.id from tblX x where name like N'%test%')
delete from tblB where id in (select x.id from tblX x where name like N'%test%')
delete from tblC where id in (select x.id from tblX x where name like N'%test%')
delete from tblD where id in (select x.id from tblX x where name like N'%test%')
Est-il un moyen de déclarer une liste qui stocke l'id de l'instruction select ci-dessus?
J'ai essayé:
declare @ids int
set @ids = select x.id from tblX x where name like N'%test%'
Mais il se plaint de ce que
Sous-requête a renvoyé plus de valeur 1. Ce n'est pas permis lorsque l'
sous-requête suit =, !=, <, <= , >, >= ou lorsque la sous-requête est utilisé comme
une expression.
Veuillez en informer, merci.
Pensez à pourquoi les top 1 qui fait ce travail. stackoverflow.com/questions/11232751/...
OriginalL'auteur Eddie | 2013-02-22
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin d'un tableau de toute façon, mais au moins vous éviter des tonnes de traitement en procédant de l'une comme à chaque fois:
Vous pouvez également utiliser une table temporaire, il ressemble à la même chose, mais au lieu de @id, vous aurez besoin d' #id, et vous avez besoin de déplacer la table temporaire après le travail est fait.
De choisir entre une table temporaire (de la table physique) ou une variable de table (mémoire comme la table), vous aurez vraiment besoin de faire quelques tests, mais par définition complexe de données fonctionne mieux dans des tables temporaires. Si vous avez juste besoin de tenir un petit nombre d'identifiants pour une courte période, je suis très sûr que les variables de table sont mieux.
Quelle est la différence entre une table temporaire et variable de table dans SQL Server?
Je n'ai pas vraiment le but, et aussi posté un lien vers les différences.
OriginalL'auteur lolol
Vous pouvez déclarer une table temporaire, puis sélectionnez dans cette table les id que vous allez supprimer.
OriginalL'auteur Narnian
Dans sql server 2008+
Si vous avez plus de quelques hundreeds d'enregistrements, vous pouvez utiliser la table temporaire de la place de la variable de table.
OriginalL'auteur Morzel