FNR*_*FNR 1 sql t-sql sql-server
我正在寻找一种迭代数据库中所有表的方法.
到目前为止我已经想出了这个:
DECLARE @TableName VARCHAR(MAX)
DECLARE MyCursor CURSOR
FOR
SELECT
DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG ='MyDB'
AND TABLE_SCHEMA=N'dbo'
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT *
FROM @TableName
FETCH NEXT FROM MyCursor INTO @TableName
END
CLOSE MyCursor
DEALLOCATE MyCursor
Run Code Online (Sandbox Code Playgroud)
我在While语句中收到一条错误消息The @TableName tablevariable must be declared(从德语翻译).
我知道应该有类型的变量TABLE在FROM @TableName,但我还没有找到如何做到这一点,只是如何声明,我不希望有新表.
你不能 SELECT * FROM @TableName
您将需要使用动态SQL
declare @sql nvarchar(max)
SELECT @sql = 'SELECT * FROM ' + QUOTENAME(@TableName)
exec sp_executesql @sql
Run Code Online (Sandbox Code Playgroud)