我来自JavaScript背景,而且我正在尝试学习T-SQL,我对代码的组织感到困扰。
现在我在WHILE
循环的文档中查看Example A,并将其写成:
WHILE (SELECT AVG(ListPrice) FROM Production.Product) < $300
BEGIN
UPDATE Production.Product
SET ListPrice = ListPrice * 2
IF (SELECT MAX(ListPrice) FROM Production.Product) > $500
BREAK
ELSE
CONTINUE
END
PRINT 'Too much for the market to bear';
它并不复杂。它易于阅读和理解,但由于缺少{}来定义块,它对我来说看起来没有组织。如果我在JavaScript中编写相同类型的东西,它看起来像:
WHILE (SELECT AVG(ListPrice) FROM Production.Product) < $300 {
UPDATE Production.Product
SET ListPrice = ListPrice * 2
IF (SELECT MAX(ListPrice) FROM Production.Product) > $500 {
BREAK;
} ELSE {
CONTINUE;
}
};
console.log('Too much for the market to bear');
所以我的问题是:T-SQL(针对SQL Server)内置了什么,可以让您以这种方式组织代码而不会对代码本身产生影响?我可以添加()或{}来分解块吗?
答案 0 :(得分:3)
在SQL中,BEGIN
和END
是任何语句集的结束和结束块
但是,您可以编写如下代码,这将是合法的
WHILE (SELECT AVG(ListPrice) FROM Production.Product) < $300 --{
BEGIN
UPDATE Production.Product
SET ListPrice = ListPrice * 2
IF (SELECT MAX(ListPrice) FROM Production.Product) > $500 --{
BREAK;
--}
ELSE --{
CONTINUE;
--}
--};
END
详细的代码就像
WHILE (SELECT AVG(ListPrice) FROM Production.Product) < $300 --{
BEGIN
UPDATE Production.Product
SET ListPrice = ListPrice * 2
IF (SELECT MAX(ListPrice) FROM Production.Product) > $500 --{
BEGIN
BREAK;
END
--}
ELSE --{
BEGIN
CONTINUE;
END
--}
--};
END