Sql server 没有FROM的SELECT语句用于什么?

Sql server 没有FROM的SELECT语句用于什么?,sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,我正在分析一个存储过程。 在那里,我遇到了一个SELECT语句,如下所示 select @msg = 'spid: ' + convert(varchar(12), @@spid) + ' pre mat pull - PRODUCT_WORK COUNT = ' + convert(char(6), @@rowcount) 没有来自的的此语句有什么作用?它是如何工作的?我们什么时候用 我们不能用SET代替SELECT 请提供帮助。在这种特殊情况下,您可以使用set而不是select。但是使用

我正在分析一个存储过程。 在那里,我遇到了一个
SELECT
语句,如下所示

select @msg = 'spid: ' + convert(varchar(12), @@spid) + ' pre mat pull - PRODUCT_WORK COUNT = ' + convert(char(6), @@rowcount)
没有来自的
的此语句有什么作用?它是如何工作的?我们什么时候用

我们不能用
SET
代替
SELECT


请提供帮助。

在这种特殊情况下,您可以使用
set
而不是
select
。但是使用
选择
可以一次分配多个变量,如

select @msg = 'msg', @data = 'data

SELECT
不带表将生成一个结果集,该结果集投影您指定的列和值-这可以绑定到应用程序中的结果集或读取器,与绑定表的
SELECT
工作方式相同


SELECT
不带表是并且将只在某些RDBMS(如
SqlServer
)中工作,但不是全部-例如,Oracle的
SELECT
需要一个表,但为此提供了一个伪表
DUAL

它还可用于
SqlServer
-
SELECT
中的赋值,允许在一条语句中赋值多个变量:

SELECT @SomeVar = 1234, @AnotherVar = 'Foo';

你必须理解@和@@

@msg = local variable 

@@spid and  @@rowcount = global variable

set和select几乎相同,但select可以从DB中获取值。Set无法从DB中获取值。

还有一个问题,就是您可以使用它将变量合并到结果集中。即。。。选择联合所有从中选择