是什么在T-SQL SELECT和SET的区别(What is the difference bet

2019-07-29 04:15发布

我工作的一个存储过程执行动态SQL功能。 下面是我发现的例子4GuysFromRolla.com

CREATE PROCEDURE MyProc
  (@TableName varchar(255),
   @FirstName varchar(50),
   @LastName varchar(50))
AS

    -- Create a variable @SQLStatement
    DECLARE @SQLStatement varchar(255)

    -- Enter the dynamic SQL statement into the
    -- variable @SQLStatement
    SELECT @SQLStatement = "SELECT * FROM " +
                   @TableName + "WHERE FirstName = '"
                   + @FirstName + "' AND LastName = '"
                   + @LastName + "'"

    -- Execute the SQL statement
    EXEC(@SQLStatement)

如果您发现,他们使用的关键字选择而 设定的这一翻译。 我不知道你能做到这一点。 有人可以解释给我2之间的区别是什么? 我一直以为SELECT只是选择记录。

Answer 1:

SELECT是ANSI,SET @LocalVar是MS T-SQL

SELECT允许多个assignents:例如选择@foo = 1,@bar = 2



Answer 2:

基本上,SET是设置变量SQL ANSI标准,SELECT不是。 SET只对单次分配,请选择可以做多项任务。 而不是写一个很好的总结在网上很多地方很长的解释:

瑞安法利博客

托尼·罗杰森

堆栈溢出



Answer 3:

选择允许多个任务。

编辑您44秒打我



Answer 4:

如果你需要指定多个值的SELECT可能会更快:

http://sqlblog.com/blogs/alexander_kuznetsov/archive/2009/01/25/defensive-database-programming-set-vs-select.aspx



Answer 5:

选择也可以用来从一个SELECT语句中的变量赋值(假设语句只返回一个记录)

从我的表选择@myvariable = MyField的其中id = 1



文章来源: What is the difference between SELECT and SET in T-SQL