我公然从这里的答案中窃取了这个:(这不是我正在寻找解决方案的唯一情况)
SELECT 'SELECT Top 10 [table] = '''
+ REPLACE(name, '''','')
+ ''', * FROM '
+ QUOTENAME(SCHEMA_NAME([schema_id]))
+ '.'
+ QUOTENAME(name)
+ ';' as SQLText
FROM sys.tables AS t
ORDER BY name;
原因是在答案中DECLARE @sql NVARCHAR(MAX)
不足以容纳所有表名,我认为我们有 120 个表(或其他),并且 SQL 文本被限制在NVARCHAR(MAX)
限制范围内。
也许在这种情况下可以EXEC sp_executesql SQLText
将它们联合起来,但是有没有办法将所有行变成一个文本并执行它呢?
存储过程的文本大小是否有限制?
请注意,我不是在寻找这个具体案例的答案,但这是我试图解决的问题类型的一个例子。