我已将select
语句存储在名为RuleSql的表列中。将来表的大小会变大,那么如何同时执行所有存储的select语句才能得到结果呢?
我用过:
EXEC sp_executesql
但它对我没有帮助。
答案 0 :(得分:1)
将sql代码存储在表中是非常糟糕的做法,您是否查看了视图,存储过程或内联表值函数?
无论如何要在表中执行存储的sql,你会做这样的事情....
DECLARE @Sql NVARCHAR(MAX);
SELECT TOP 1 @Sql = RuleSql
FROM TableName --<-- table where sql is stored
WHERE <Some Condition>
Exec sp_executesql @Sql
刚刚看到你的编辑,一次执行所有查询你会使用类似.....的光标。
DECLARE @Sql NVARCHAR(MAX);
DECLARE Cur CURSOR LOCAL FAST_FORWARD FOR
SELECT RuleSql
FROM TableName --<-- table where sql is stored
OPEN Cur
FETCH NEXT FROM Cur INTO @Sql
WHILE (@@FETCH_STATUS = 0)
BEGIN
Exec sp_executesql @Sql
FETCH NEXT FROM Cur INTO @Sql
END
CLOSE Cur
DEALLOCATE Cur;
答案 1 :(得分:0)
如果您要使用相同的信息,但要针对整个数据库(数据库的所有表)并创建具有结果的表,则可以使用followin