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

时间:2014-06-11 05:49:46

标签: sql-server tsql stored-procedures

我正在分析存储过程。 我在那里看到了SELECT声明,如下所示。

select @msg = 'spid: ' + convert(varchar(12), @@spid) + ' pre mat pull - PRODUCT_WORK COUNT = ' + convert(char(6), @@rowcount)

没有FROM这句话的内容是什么?它是如何工作的?我们什么时候使用它?

我们不能使用SET代替SELECT吗?

请帮忙。

3 个答案:

答案 0 :(得分:5)

没有表的

SELECT将生成一个结果集,用于投射您指定的列和值 - 这可以绑定到应用程序中的结果集或读取器,与表绑定的方式相同SELECT有效。

没有表格的{p> SELECTnot an ANSI standard,并且仅适用于某些RDBMS(例如SqlServer),但不是全部 - 例如Oracle的SELECT需要一个表,但为此提供了一个伪表DUAL

它也可用于SqlServer中的赋值 - SELECT将允许在一个语句中分配多个变量:

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

您必须了解@和@@

@msg = local variable 

@@spid and  @@rowcount = global variable

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