【问题标题】:What is the difference between SELECT and SET in T-SQLT-SQL中的SELECT和SET有什么区别
【发布时间】:2009-06-23 19:28:24
【问题描述】:

我正在开发一个执行一些动态 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)

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

【问题讨论】:

标签: sql sql-server tsql


【解决方案1】:

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

SELECT 允许多个分配者:例如 SELECT @foo = 1, @bar = 2

【讨论】:

【解决方案2】:

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

ryan farley blog

tony rogerson

stackoverflow

【讨论】:

    【解决方案3】:

    选择允许多个分配。

    编辑你比我快 44 秒

    【讨论】:

      【解决方案4】:

      【讨论】:

      • 鉴于您仍然必须将值写入内存,我对此表示怀疑。无论是 2xSET 还是 1xSELECT,它仍然是 2 个赋值。
      • gbn,我提供了基准。您可以运行基准测试并亲自查看
      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 2010-10-26
        • 2011-07-22
        • 1970-01-01
        • 2012-03-10
        • 2010-11-21
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 2016-12-31
        相关资源
        最近更新 更多