首页 > 解决方案 > 执行存储在 SQL Server 表中的语句

问题描述

例如,我将创建一个临时表:

CREATE TABLE #TembTable  
(
      Command VARCHAR(max)  
) 

将值插入表中

INSERT INTO #TembTable (Command)
VALUES ('SELECT @@VERSION AS Version_Name ;'),
       ('SELECT @@LANGUAGE AS Current_Language;'),
       ('SELECT @@LANGID AS Language_ID ;'),
       ('SELECT @@SERVERNAME AS Server_Name;'),
       ('SELECT @@SERVICENAME AS Service_Name;')

如果我选择所有值

SELECT * FROM #TembTable

结果将显示:

SELECT @@VERSION AS Version_Name ;
SELECT @@LANGUAGE AS Current_Language;
SELECT @@LANGID AS Language_ID ;
SELECT @@SERVERNAME AS Server_Name;
SELECT @@SERVICENAME AS Service_Name;

我想要做的是自动执行每个命令。

谢谢。

标签: sql-servertsqlsql-server-2012dynamic-sql

解决方案


您必须声明一个变量

DECLARE @Statements NVARCHAR(MAX);

使用#Temptable 中的命令填充此变量

SET @Statements = ( SELECT STRING_AGG (CONVERT(NVARCHAR(MAX),Command), NCHAR(13)) 
                    FROM   #TembTable)
;

并执行它:

EXECUTE (@Statements)
;

推荐阅读