sql server #region

195

我能在sql server编辑器中创建区域吗(就像C#中的#region#endregion)?


如果有人在寻找MySQL的等效命令,则使用“--#region Some text”和“--#endregion”。 - Sid110307
9个回答

330

很抱歉,没有办法实现!但是...

通过添加 beginend 以及在begin 上添加注释,可以创建如下所示的区域...尽管这有点取巧!

begin end 区域代码截图

否则,你只能展开或者折叠所有内容,无法指定应该展开或者折叠什么。不过可以使用第三方工具,例如SSMS 工具包


5
请确保在文本编辑器>Transact-SQL>智能感知>启用智能感知下启用了大纲语句。 - GatesReign
3
虽然所有的 Transact-SQL 语句都可以在 BEGIN...END 代码块中使用,但某些 Transact-SQL 语句不应该在同一个批处理(语句块)中分组。能否有人告诉我为什么它们不应该被分组呢? - Jacob Phan
2
有用的技巧,但如果您想创建多个区域/部分,请不要忘记在“end”语句后添加“go”。 - marchWest
1
好的!如果你只有注释块,你必须添加一些非注释内容。例如:print - inon
1
这似乎并不适用于每种情况,除非我漏掉了什么。如果您正在使用“CREATE SCHEMA”,它似乎至少会出现问题。 - Panzercrisis

24

(我是SSMSBoost插件的开发人员)

我们最近已经将对此语法的支持添加到我们的SSMSBoost插件中。

--#region [Optional Name]
--#endregion
它还有一个选项,可以在打开脚本时自动“识别”区域。

它还有一个选项,可以在打开脚本时自动"识别"区域。


2
可以,但无法即时生效。我必须关闭并重新打开文件才能折叠新创建的区域。 - Martin Capodici
4
在 SSMSBoost 工具栏菜单中有一个“重新解析区域”选项,因此无需重新打开文件。 - Andrei Rantsevich
很遗憾,这里有一个错误。如果区域内的第一行代码被注释掉了,那么该区域将在最后一个被注释掉的代码行结束。 - Jeff
FYI:不是开源 - yzorg

11

BEGIN...END 工作正常,只需要添加注释部分。最简单的方法是添加一个部分名称!另一种方法是添加注释块。请参见以下内容:

BEGIN  -- Section Name
/* 
Comment block some stuff  --end comment should be on next line
*/

 --Very long query
SELECT * FROM FOO
SELECT * FROM BAR
END

8
只需在查询编辑器中使用文本缩进即可。 展开视图: Expanded 折叠视图: Collapsed

7
在Sql Server Management Studio中,这不是一个开箱即用的功能,但它是非常好的SSMS Tools Pack的一个特性。

10
注意:该产品需要支付30欧元并提供60天试用期。 - Martin Capodici
2
当这个发布时,该扩展是免费的。 - Pero P.
SSMS Tools Pack中的区域与Visual Studio中的区域略有不同。它们似乎只从遵循区域指令的行开始,并且并不总是可用且按预期工作,尤其是在长脚本中。我喜欢SSMS TP,但我觉得这个特定功能不够可靠。 - undefined

4

不,T-SQL语言中不存在#region。

您可以使用begin-end块来获取代码折叠:

-- 我的区域
begin
    -- 代码放在这里
end

我不确定是否建议在此情况下使用它们,除非无法通过其他方式对代码进行适当的重构!


3

我曾经使用过类似于麦维提的技术,但只在存储过程或者比较长的脚本中使用。我会将某些功能相似的部分拆分为如下形式:

BEGIN /** delete queries **/

DELETE FROM blah_blah

END /** delete queries **/

BEGIN /** update queries **/

UPDATE sometable SET something = 1

END /** update queries **/

这种方法在管理工具中表现得很好,对于代码审查非常有帮助。折叠的部分看起来像这样:
BEGIN /** delete queries **/ ... /** delete queries **/

我实际上更喜欢这种方式,因为我知道我的BEGINEND匹配。


2

另外的一个选项是,如果您的目的是分析您的查询,Notepad+ 对于 Sql 有有用的自动包装功能。


这真的帮了我很多。谢谢。 - Theotonio

-1
开始 --做一些事情 结束 GO
开始 --做其他事情 结束 GO

请您能否解释一下现有答案的区别是什么? - undefined
你的回答目前写得不够清楚。请编辑并添加更多细节,以帮助其他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined
请使用格式化来改善您的仅代码回答的表现。最好添加一段散文解释这个方法是如何工作的,以及为什么它有助于解决问题。确保指出您的答案在现有答案之外提供的额外见解。因为目前您的答案,即使在正确格式化的情况下,也给人一种更差的格式化、未解释的、重复的答案的印象。请尝试[答案],并考虑参观[导览]。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接