问题描述
作为示例,我将创建一个临时表:
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