在 Azure Data Studio (ADS) 中,是否可以在查询之间重用 SQL 参数?不确定我是否脱离了 ADS 的预期目的,但如果我可以在一个代码文本(或任何地方)中声明一组变量,并且让我的所有查询都能理解和利用它们,那就太好了。与使用 Python 的 Jupyter 笔记本类似,您如何在一个代码块中执行全局变量,而所有其他代码块都会尊重这些变量。
总的来说,除了 Microsoft 官方文档之外,我很难找到有关 ADS 的文档。
据我所知,不会,因为变量在当前批次的范围内。
解决方法是创建一个临时表并插入该值。虽然很恶心,但是确实有效。
在代码单元#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'
)
在 Transact-SQL 中无法声明全局变量。所以我们也不能用ADS设置全局变量。
在早期版本中:
但是还有另一种方法可以帮助您使用 SSMS SQLCMD 模式将变量设置为全局变量。
可以参考这篇博客:如何在SQL Server中声明全局变量..?
希望这有帮助。
是的,您也可以将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 对其进行了测试。