我对TSQL(主要是MySQL体验)有点新鲜。我碰到一些参数声明,我不确定,如果有的话,区别是什么,在一个存储过程具有与申报时没有“为”关键字:参数在TSQL中有或没有“AS”关键字
CREATE PROCEDURE [dbo].[SomeStoredProc]
@variable1 varchar(50),
@variable2 as varchar(50)
...
我对TSQL(主要是MySQL体验)有点新鲜。我碰到一些参数声明,我不确定,如果有的话,区别是什么,在一个存储过程具有与申报时没有“为”关键字:参数在TSQL中有或没有“AS”关键字
CREATE PROCEDURE [dbo].[SomeStoredProc]
@variable1 varchar(50),
@variable2 as varchar(50)
...
奇怪的是the documentation不显示AS
为部分语法既不可选也不强制。
但是,无论如何,没有区别。
有趣的是,关于局部变量的文档显示了它,但没有提供任何解释:https://msdn.microsoft.com/en-us/library/ms188927.aspx –
@RandyHall有趣的东西。他们可能会将'DECLARE'语法扩展到'CREATE PROCEDURE'头文件中(这只是一个预感)。 –
OP发布了参数声明,而不是变量。 –
据我所知,除了预期为AS
(但不是强制性)的别名列外,AS
是可选的,更常用于查询中。关于功能,它们是相同的。
FROM Table1 AS t
FROM Table1 t
--They are the same.
如果你看到这样的变量和代码不DECLARE
他们来说,这意味着这些必须通过当您执行查询通过;
CREATE PROCEDURE [dbo].[SomeStoredProc]
@variable1 varchar(50),
@variable2 as varchar(50)
AS
DECLARE @Variable3 varchar(50)
/* PUT YOUR STORED PROC CODE HERE */
当您运行EXEC SomeStoredProc
您将需要遵循了该值Variable1
和Variable2
否则它会报错了。上面的Variable3
是在存储过程中创建的,因此不需要通过EXEC
命令来传递。
问题是关于使用和不使用'as'关键字之间的区别,而不是局部变量的一般功能。 –
这意味着当你执行你的存储过程时,你将需要传递这些变量,否则会引发错误。 –
这些是参数,而不是变量 –
@PanagiotisKanavos你是对的。为了清晰起见,我更新了 –