7

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

在此处输入图像描述

一般来说,除了微软官方文档之外,我在 ADS 上找到文档的运气并不好。

4

2 回答 2

3

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

一种解决方法是创建一个临时表并插入该值。这真的很恶心,但它确实有效。

在代码单元 #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'
    )
于 2019-11-25T15:28:05.677 回答
2

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

在早期版本中:

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

参考:变量 (Transact-SQL)

但是还有另一种方法可以帮助您使用 SSMS SQLCMD 模式将变量设置为全局变量。 在此处输入图像描述

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

希望这可以帮助。

于 2019-11-29T07:48:00.500 回答