Solución:
Utilice este procedimiento almacenado del sistema
sp_MSforeachtable @command1="select count(*) from ?"
Código de muestra
Nota:
- Esta
sp_MSforeachtable
es un procedimiento almacenado indocumentado. - No es compatible con Azure SQL (según el comentario a continuación).
Quizás esto es lo que estás buscando
DECLARE @NAME VARCHAR(100)
DECLARE @SQL NVARCHAR(300)
DECLARE CUR CURSOR FOR
SELECT NAME
FROM SYS.TABLES
WHERE TYPE = 'U'
AND SCHEMA_ID = 1
OPEN CUR
FETCH NEXT FROM CUR INTO @NAME
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'SELECT * FROM WS_LIVE.DBO.'[email protected]+' WHERE GCRECORD IS NOT NULL'
PRINT @SQL
EXEC Sp_executesql
@SQL
FETCH NEXT FROM CUR INTO @NAME
END
CLOSE CUR
DEALLOCATE CUR
Algunas veces, usar Cursor en SQL es un riesgo. A continuación, la consulta SQL recorrerá todas las tablas en una base de datos seleccionada sin usar CURSOR.
USE TEST
Declare @TableName nvarchar(256)
SET @TableName=""
WHILE @TableName IS NOT NULL
BEGIN
SET @TableName =
(
SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
)
print @TableName -- Your logic will come here
END
GO
Las declaraciones SQL anteriores imprimirán todas las tablas en el lado del PRUEBA base de datos. Entonces, en lugar de imprimir la declaración de la tabla, puede dar su propia lógica sql como lo que desea hacer con el bucle de cada tabla y @Nombre de la tabla contendrá el nombre de la tabla en el ciclo actual.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)