T-SQL中SELECT和SET有什么区别

时间:2009-06-23 19:28:25

标签: sql sql-server tsql

我正在处理执行一些动态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)

如果您注意到,他们使用 SET 的关键字 SET 。我不知道你能做到这一点。有人可以向我解释2之间的区别吗?我一直以为 SELECT 只是为了选择记录。

5 个答案:

答案 0 :(得分:10)

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

SELECT允许多个受理人:例如SELECT @foo = 1,@ bar = 2

答案 1 :(得分:6)

基本上,SET是设置变量的SQL ANSI标准,SELECT不是。 SET仅适用于单个分配,SELECT可以执行多个分配。而不是在网上的许多地方写出很好的总结的长解释:

ryan farley blog

tony rogerson

stackoverflow

答案 2 :(得分:2)

选择允许多项作业。

编辑 你击败了我44秒

答案 3 :(得分:0)

答案 4 :(得分:0)

Select也可用于从select语句中获取变量赋值(假设该语句只返回一条记录)

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