Comment parcourir chaque ligne dans le server sql?

Ma requête renvoie 26 noms de table.

select name from sys.tables where name like '%JPro_VP_Service%' 

Maintenant j'essaye d'écrire une requête pour vérifier chaque return de table de la requête ci-dessus.

 --consider this is my first table select * from JPro_VP_Service where row_id like '%1-101%' or row_id like '%1-102%' -- likewise I want to search in 26 tables return from above query 

Je pense que je dois écrire pour ou slider pour accomplir ceci.

Quelqu'un peut-il m'aider à atteindre cet objective?

La façon la plus simple de le faire est d'essayer ceci:

 SELECT 'select * from ' + name + ' where row_id like ''%1-101%'' or row_id like ''%1-102%''' FROM sys.tables WHERE name LIKE '%JPro_VP_Service%' 

vous obtiendrez toutes les tables avec les mêmes conditions. Vous pourriez les exécuter set.

Oui, vous devrez utiliser un slider pour cela, et probablement aussi SQL dynamic

Regarde aussi

Générer des instructions SQL dynamics dans SQL Server

SQL dynamic PRO et CON

 DECLARE @mn INT DECLARE @mx INT DECLARE @tblname VARCHAR(100); WITH cte AS (SELECT Row_number() OVER ( ORDER BY (SELECT 0)) AS rn, name FROM sys.tables WHERE name LIKE '%JPro_VP_Service%') SELECT @mn = Min(rn), @mx = Max(rn) FROM cte WHILE( @mn >= @mx ) BEGIN SELECT @tblname = name FROM cte WHERE rn = @mn SELECT * FROM @tblname WHERE row_id LIKE '%1-101%' OR row_id LIKE '%1-102%' --Do something else SET @mn=@mn + 1 END 

Cette route peut fonctionner, bien que vous souhaitiez que les résultats soient enregistrés dans une table:

 DECLARE @tables TABLE( ID INT IDENTITY(1,1), Name VARCHAR(100) ) INSERT INTO @tables (Name) SELECT name FROM sys.tables WHERE name like '%JPro_VP_Service%' DECLARE @b INT = 1, @m INT, @table VARCHAR(100), @cmd NVARCHAR(MAX) SELECT @m = MAX(ID) FROM @tables WHILE @b <= @m BEGIN SELECT @table = Name FROM @tables WHERE ID = @b SET @cmd = 'select * from ' + @table + ' where row_id like ''%1-101%'' or row_id like ''%1-102%'' ' EXECUTE sp_executesql @cmd SET @b = @b + 1 SET @cmd = '' END