存储在SQL Server表中的Execute语句

问题描述

作为示例,我将创建一个临时表:

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;

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

谢谢。

解决方法

您必须声明一个变量

DECLARE @Statements NVARCHAR(MAX);

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

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

并执行它:

EXECUTE (@Statements)
;
,

选择查询是一个数据库对象,它在数据表视图中显示信息。查询不存储数据,它显示存储在表中的数据。查询可以显示来自一个或多个表,来自其他查询或来自两者的组合的数据。 (https://support.microsoft.com/en-us/office/create-a-simple-select-query-de8b1c8d-14e9-4b25-8e22-70888d54de59#:~:text=A%20select%20query%20is%20a,a%20combination%20of%20the%20two

如果您打算获取语句的值,则可以合并存储过程以完成上述操作。

CREATE PROCEDURE Getdetails
AS
BEGIN
    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;
END;

获取o / p:以下内容将检索您需要的所有详细信息

exec Getdetails

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...