在 Azure Data Studio 中尝试 SQL Notebooks,但在一个单元格中声明的变量未携带到新单元格
Posted
技术标签:
【中文标题】在 Azure Data Studio 中尝试 SQL Notebooks,但在一个单元格中声明的变量未携带到新单元格【英文标题】:Trying SQL Notebooks in Azure Data Studio but variables declared in one cell are not carrying to new cell 【发布时间】:2020-07-11 11:35:58 【问题描述】:我正在尝试使用类似于我习惯使用 Jupyter Notebooks 来记录我使用的一些标准查询的 SQL Notebooks。但是,当我在一个单元格中声明表变量时,无法在新单元格中访问该值。我这样做是为了注释每个单元格以解释我为什么要执行这些操作。这是 SQL Notebooks 的限制吗?或者有没有我遗漏的声明?
【问题讨论】:
每个单元格都是一个独立的批次,就像查询窗口中的 GO 批次分隔符一样。我建议您根据需要使用 cmets 注释 T-SQL 代码,并使用文本单元格(可选地带有标记)来获取说明和文档。 这种方式违背了 Jupyter Notebook 的目的,您应该能够“美化”通常在-- comments --
中的内容,并且还能够运行代码片段不按顺序进行实验并查看细微更改对更长更复杂事务的一系列操作的影响
【参考方案1】:
有一种解决方法是使用 SQL 本身和会话上下文在块之间声明变量。
请看这里: https://www.ericgharrison.com/?p=418
通过会话上下文设置,我们可以使用 sp_set_session_context 存储值...
EXEC sp_set_session_context 'StartDate', '11/01/2020' EXEC sp_set_session_context 'EndDate', '11/01/2020 23:59:59.99'
…然后在另一个代码块中检索和使用它们:
声明@StartDate DATETIME 声明@EndDate DATETIME 选择 @StartDate = CAST(SESSION_CONTEXT(N'StartDate') AS DATETIME) SELECT @EndDate = CAST(SESSION_CONTEXT(N'EndDate') AS DATETIME)
【讨论】:
以上是关于在 Azure Data Studio 中尝试 SQL Notebooks,但在一个单元格中声明的变量未携带到新单元格的主要内容,如果未能解决你的问题,请参考以下文章
Azure Data Studio:未找到新安装扩展的设置/未出现在设置中
如何从 Azure Data Studio 与 Docker 中托管的 SQL Server 2019 容器进行通信
在 M1 Mac 上的 Azure Data Studio 中构建 SQL Server 数据库项目真的不可能吗?