Sql server 在SQL Server存储过程中使用什么缩进样式?
我的SQL Server存储过程编辑IDE似乎都没有任何工具来强制执行缩进样式,因此我发现我看到的许多存储过程到处都是。我发现缩进确实提高了可读性。我想在我们公司的《编码风格指南》中编纂一些存储过程识别标准,我想知道是否有人愿意分享任何最佳实践 例如,在一个普通的SELECT语句中,我尝试将SELECT、FROM、WHERE、ORDER BY和GROUP BY子句保持在同一级别上,并缩进低于该级别的任何内容。我还尝试将每个连接从逻辑上连接到的表中缩进一级Sql server 在SQL Server存储过程中使用什么缩进样式?,sql-server,stored-procedures,coding-style,Sql Server,Stored Procedures,Coding Style,我的SQL Server存储过程编辑IDE似乎都没有任何工具来强制执行缩进样式,因此我发现我看到的许多存储过程到处都是。我发现缩进确实提高了可读性。我想在我们公司的《编码风格指南》中编纂一些存储过程识别标准,我想知道是否有人愿意分享任何最佳实践 例如,在一个普通的SELECT语句中,我尝试将SELECT、FROM、WHERE、ORDER BY和GROUP BY子句保持在同一级别上,并缩进低于该级别的任何内容。我还尝试将每个连接从逻辑上连接到的表中缩进一级 其他人有类似的建议或最佳做法吗?我更喜欢
其他人有类似的建议或最佳做法吗?我更喜欢以下风格:
--
-- SELECT statements
--
select field1,
field2,
field3,
fieldn
from tblOne as t1
inner join tblTwo as t2
on t1.field = t2.field
and t1.field2 = t2.field2
left outer join tblThree as t3
on t2.field = t3.field
and t2.field2 = t3.field2
where t1.field = 'something'
and t2.field = 'somethin else'
order by fieldn
--
-- IF statements
--
if @someVar = 'something'
begin
-- statements here
set @someVar2 = 'something else'
end
--
-- WHILE statements
--
while @count < @max
begin
set @count = @count + 1
end
我的风格几乎和贾斯汀的一模一样。我缩进了,所以d在,和e在哪里对齐 有时我把关键词大写。当我有一个子选择时,我缩进整个子选择,并将其格式化为与常规选择相同的格式 我可能会偏离的一个地方是,如果我选择了几十个字段。在这种情况下,我将多个字段放在一行中,并添加空白,以使文本列均匀
SELECT T1.Field1,
T1.Field2,
T2.Field1 As Field 3
FROM Table1 AS T1
LEFT JOIN Table2 AS T2
ON T1.Field1 = T2.Field7
WHERE T1.Field9 = 5
AND T2.Field1 < 900
ORDER BY T2.Field1 DESC
INSERT INTO Table1 (
Field1,
Filed2,
Field3 )
VALUES ( 'Field1',
'Field2',
'Field3' )
UPDATE Table1
SET Field1 = SomeValue,
Field2 = AnotherValue,
FIeld134567 = A ThirdValue
WHERE Field9 = A Final Value
我发现我不需要设置缩进长度,而是尝试根据字段名和值的长度缩进。我喜欢我的左边距沿着任何给定的垂直面排列,我喜欢我的计算器,比如等号。我总是在与其伴随的值和字段不同的垂直平面上使用任何命令项。我还倾向于尝试使SELECT命令和字段列表之间的空间长度等于SELECT DISTINCT字段或INSERT INTO表所使用的空间
但最终,所有这些都只是我的偏好。我喜欢整洁的代码 我的选择格式:
--
-- SELECT statements
--
select
t1.field1, t1.field2,
t2.field3,
t3.fieldn
from
tblOne t1
inner join tblTwo t2 on t1.field = t2.field and t1.field2 = t2.field2
left join tblThree t3 on t2.field = t3.field and t2.field2 = t3.field2
left join (
select id, sum(quantity) as quantity
from tbl4
group by id
) t4 on t4.id=t3.id
where
t1.field = 'something'
and t2.field = 'somethin else'
order by
fieldn
或者,当线条过长时,我会在逻辑边界处拆分线条,并缩进拆分的部分:
inner join tblTwo as t2
on t1.field = t2.field and t1.field2 = t2.field2
有时我对非常简单的子选择使用不同的语法。
主要目标是使代码可读并相对容易修改
-编辑-
至少在小型团队中,不需要强制执行非常严格的规则,这有助于支持和维护:在我们的团队中,大约有3-4人编写了大多数sql,很容易建立代码作者,只需查看sql语句,所有人都使用不同风格的大写字母、别名、缩进等
SELECT T1.Field1,
T1.Field2,
T2.Field1 AS Field 3
FROM Table1 AS T1
LEFT JOIN Table2 AS T2 ON T1.Field1 = T2.Field7
WHERE T1.Field9 = 5
AND T2.Field1 < 900
ORDER BY T2.Field1 DESC
INSERT INTO Table1 (Field1, Field2, Field3)
VALUES ('Field1', 'Field2', 'Field3' ) /* for values trivial in length */
UPDATE Table1
SET Field1 = SomeValue,
Field2 = AnotherValue,
FIeld134567 = A ThirdValue
WHERE Field9 = A Final Value
我想我更喜欢的格式来自我在大学时上的一门COBOL课程。关于排列整齐的列中的代码,这让我很高兴。我倾向于右对齐关键字:
SELECT T1.Field1, T2.Field2
FROM Table1 AS T1
LEFT JOIN Table2 AS T2 ON T1.Field1 = T2.Field7
WHERE T1.Field9 = 5
AND T2.Field1 < 900
ORDER BY T2.Field1 DESC
我喜欢下面的风格
Select
Id = i.Identity,
User = u.UserName,
From
tblIdentities i
Inner Join
tblUsers u On i.UserId = u.UserId
Where
(
u.IsActive = 'True'
And
i.Identity > 100
)
我也尽量不使用As关键字。我宁愿选择相等的。可能会让一些人不高兴,但我发现这段代码更容易阅读
Select
Id = tbl.Identity,
User = tbl.UserName,
Age = tbl.Age,
DOB = tbl.DateOfBirth
From
tbl
而不是
Select
tbl.Id As Identity,
tbl.UserName As User,
tbl.Age As Age,
tbl.DateOfBirth As DOB
From
tbl
我也在你描述的重要关键词下缩进。
Select
tbl.Id As Identity,
tbl.UserName As User,
tbl.Age As Age,
tbl.DateOfBirth As DOB
From
tbl