我想知道AS
关键字在SQL Server中做了什么。
我知道它是在查询上使用它设置别名时的上下文,但是,我不知道它在存储过程或用户定义函数中使用时的含义。为什么在begin关键字之前需要它?
CREATE FUNCTION dbo.UDF_rangeoddeven( @start int, @end int, @oddeven nvarchar(4))
returns @table table
(
Number int
)
AS
BEGIN
IF @oddeven = 'even'
WHILE @start <= @end
BEGIN
IF @start%2 = 0
BEGIN
INSERT INTO @table
SELECT @start;
END
SET @start = @start + 1;
END
ELSE
WHILE @start <= @end
BEGIN
IF @start%2 = 1
BEGIN
INSERT INTO @table
SELECT @start;
END
SET @start = @start + 1;
END
RETURN
END
GO
这是一大块语言语法。
对于存储的函数/过程(sps),公用表表达式(CTE)和视图,AS
作为声明语法的一部分。可以这样想:声明public_part AS私有部分。
sp的公共部分是它的声明:如何访问它。私有部分是代码。 CTE也是如此:
WITH summary AS (
SELECT id, MAX(val) maxval, MIN(val) minval, SUM(val) sumval
FROM raw
GROUP BY ID
)
语法与它在SELECT中使用的方式相反,其中它声明表达式AS名称。
为什么会逆转?也许Stonebraker博士或Date博士知道吗?
某些SQL方言允许在某些上下文中省略AS
。