9.2 SQL Server BEGIN END
BEGIN END
简介
BEGIN…END语句用于定义语句块。语句块由一组一起执行的SQL语句组成。语句块也称为批处理。
打个比方说,如果语句是句子,那么BEGIN…END语句包裹的就是段落。
语法:
| BEGIN | |
| 一组SQL代码 | |
| END |
在此语法中,在BEGIN和END关键字之间放置一组SQL语句,例如:
| BEGIN | |
| SELECT | |
| product_id, | |
| product_name | |
| FROM | |
| production.products | |
| WHERE | |
| list_price > 100000; | |
| IF @@ROWCOUNT = 0 | |
| PRINT 'No product with price greater than 100000 found'; | |
| END |

要查看PRINT语句生成的消息,需要在SQL Server Management Studio中单击Messages(消息)选项卡。默认情况下,消息选项卡处于隐藏状态。
本例中:
- 首先,有一个以
BEGIN关键字开始并以END结尾的块关键字。 - 第二,在块内,有一个
SELECT语句,查找标价大于100000的产品。然后,有IF语句检查查询是否返回任何产品,如果没有产品返回,则打印一条消息。
请注意,
@@ROWCOUNT是一个系统变量,它返回受上一条语句影响的行数。
BEGIN…END语句绑定SQL语句的逻辑块。我们经常在存储过程和函数的开头和结尾使用BEGIN…END。但这并不是绝对必要的。
但是,对于需要包装多个语句的IF ELSE语句、WHILE语句等,必需要BEGIN…END
嵌套BEGIN... END
语句块可以嵌套。只是意味着可以将BEGIN…END语句放在另一个BEGIN…END语句中。
比如:
| BEGIN | |
| DECLARE @name VARCHAR(MAX); | |
| SELECT TOP 1 | |
| @name = product_name | |
| FROM | |
| production.products | |
| ORDER BY | |
| list_price DESC; | |
| IF @@ROWCOUNT <> 0 | |
| BEGIN | |
| PRINT 'The most expensive product is ' + @name | |
| END | |
| ELSE | |
| BEGIN | |
| PRINT 'No product found'; | |
| END; | |
| END |
在本例中,使用BEGIN…END语句包装整个语句块。在这个块中,还将BEGIN…END用于IF…ELSE语句。
分类: SQL Server
漫思
浙公网安备 33010602011771号