Bil*_*eer 2 sql t-sql sql-server
我是一名C#开发人员,试图更熟悉SQL Server存储过程.
我有点困惑为什么"A"中的语法有效并且"B"不起作用Set @id.这里发生了什么让"B"需要Select而不是Set?
例A(作品)
DECLARE @currDateTime DateTime
SET @currDateTime = GetDate()
SELECT @currDateTime
Run Code Online (Sandbox Code Playgroud)
例B(不起作用)
DECLARE @id int
SET @id = ID FROM [MyTable] WHERE [Field1] = 'Test'
Run Code Online (Sandbox Code Playgroud)
例C(有效)
DECLARE @id int
SELECT @id = ID
FROM [MyTable]
WHERE [Field1] = 'Test'
Run Code Online (Sandbox Code Playgroud)
SELECT是一种内置类型的SQL子句,它运行查询并以表格的形式返回结果集,或者将变量分配给查询的结果.
SET 是一个设置变量的子句.
两者非常不同. SELECT有各种其他相关条款,如FROM,WHERE等等; SET才不是. SELECT在正常使用情况下将值作为结果表返回; SET才不是.
不可否认,两者在表达式中看起来都是一样的:
set @currDateTime = GetDate();
select @currDateTime = GetDate();
Run Code Online (Sandbox Code Playgroud)
但是,设置单个值的语法看起来是相同的,这实在是巧合.