В чем разница между SELECT и SET в T-SQL - PullRequest
8 голосов
/ 23 июня 2009

Я работаю над хранимым процессом, который выполняет некоторые динамические 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 intead из SET . Я не знал, что ты мог сделать это. Может кто-нибудь объяснить мне разницу между 2? Я всегда думал, что SELECT просто для выбора записей.

Ответы [ 5 ]

10 голосов
/ 23 июня 2009

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

SELECT допускает несколько назначений: например, SELECT @foo = 1, @bar = 2

6 голосов
/ 23 июня 2009

По сути, SET - это стандарт SQL ANSI для переменных настроек, а SELECT - нет. SET работает только для отдельных назначений, SELECT может выполнять несколько назначений. Вместо того, чтобы написать длинное объяснение, которое хорошо обобщено во многих местах в сети:

блог Райана Фарли

Тони Роджерсон

StackOverflow

2 голосов
/ 23 июня 2009

Выбор позволяет несколько назначений.

РЕДАКТИРОВАТЬ Вы победили меня на 44 секунды

0 голосов
/ 24 июня 2009

Выбрать также можно использовать для получения назначения переменной из оператора выбора (при условии, что оператор возвращает только одну запись)

Выберите @myvariable = myfield из моей таблицы, где id = 1

0 голосов
/ 23 июня 2009

ВЫБОР может быть быстрее, если вам нужно назначить несколько значений:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...