我正在分析存储过程。
我在那里看到了SELECT
声明,如下所示。
select @msg = 'spid: ' + convert(varchar(12), @@spid) + ' pre mat pull - PRODUCT_WORK COUNT = ' + convert(char(6), @@rowcount)
没有FROM
这句话的内容是什么?它是如何工作的?我们什么时候使用它?
我们不能使用SET
代替SELECT
吗?
请帮忙。
答案 0 :(得分:5)
SELECT
将生成一个结果集,用于投射您指定的列和值 - 这可以绑定到应用程序中的结果集或读取器,与表绑定的方式相同SELECT
有效。
SELECT
是not 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中获取值。