Azure Data Studio - 设置用作全局变量的 SQL 变量

问题描述 投票:0回答:3

在 Azure Data Studio (ADS) 中,是否可以在查询之间重用 SQL 参数?不确定我是否脱离了 ADS 的预期目的,但如果我可以在一个代码文本(或任何地方)中声明一组变量,并且让我的所有查询都能理解和利用它们,那就太好了。与使用 Python 的 Jupyter 笔记本类似,您如何在一个代码块中执行全局变量,而所有其他代码块都会尊重这些变量。

enter image description here

总的来说,除了 Microsoft 官方文档之外,我很难找到有关 ADS 的文档。

sql t-sql azure-sql-database azure-data-studio
3个回答
7
投票

据我所知,不会,因为变量在当前批次的范围内。

解决方法是创建一个临时表并插入该值。虽然很恶心,但是确实有效。

在代码单元#1中:

CREATE TABLE #variableStorage (varname VARCHAR(100), val VARCHAR(100))
INSERT INTO #variableStorage
VALUES 
('SomeVariable', 'Foo')

CREATE TABLE #testing (ID INT, testval VARCHAR(100))

INSERT INTO #testing
VALUES 
(100, 'Foo')

在代码单元#2中:

SELECT *
from #testing

WHERE testval = (
    SELECT val 
    FROM #variableStorage 
    WHERE varname = 'SomeVariable'
    )

2
投票

在 Transact-SQL 中无法声明全局变量。所以我们也不能用ADS设置全局变量。

在早期版本中:

  • 某些 Transact-SQL 系统函数的名称以两个 at 开头 符号(@@)。尽管在 SQL Server 的早期版本中, @@函数被称为全局变量,它们不是 变量,并且不具有与变量相同的行为。这 @@functions是系统函数,其语法用法遵循 函数规则。

参考:变量 (Transact-SQL)

但是还有另一种方法可以帮助您使用 SSMS SQLCMD 模式将变量设置为全局变量。 enter image description here

可以参考这篇博客:如何在SQL Server中声明全局变量..?

希望这有帮助。


0
投票

是的,您也可以将sql语句定义为变量并先构建它,然后执行它:

DECLARE @TableName NVARCHAR(50) = 'Employees';
DECLARE @ColumnName NVARCHAR(50) = 'FirstName';

DECLARE @SQL NVARCHAR(MAX);
SET @SQL = N'SELECT ' + QUOTENAME(@ColumnName) + ' FROM ' + QUOTENAME(@TableName);

EXEC sp_executesql @SQL;

我只需要相同的功能并已使用 Azure Data Studio 对其进行了测试。

© www.soinside.com 2019 - 2024. All rights reserved.