执行存储在表中的动态选择查询

时间:2015-08-27 12:16:26

标签: sql sql-server

我已将select语句存储在名为RuleSql的表列中。将来表的大小会变大,那么如何同时执行所有存储的select语句才能得到结果呢?

我用过:

EXEC sp_executesql

但它对我没有帮助。

enter image description here

2 个答案:

答案 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