2009-06-23 54 views
8

我正在處理一個執行一些動態sql的存儲過程。下面是我對4GuysFromRolla.comSELECT和SET在T-SQL中有什麼區別

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。我不知道你可以做到這一點。有人能向我解釋2之間的區別嗎?我一直認爲選擇只是爲了選擇記錄。

+1

http://stackoverflow.com/questions的重複/ 866767/set-vs-select-whats-the-difference – shahkalpesh 2009-06-23 19:31:25

+0

不完全重複。另一個問題是詢問表現。我在詢問關鍵字語言差異 – Micah 2009-06-23 20:15:39

回答

10

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

SELECT允許多個assignents:例如選擇@foo = 1,@bar = 2

+0

您的第一點與@ breitak67的答案中的許多來源相矛盾(http://stackoverflow.com/questions/1034634/what-is-the-difference-between-select-and-set- in-t-sql/1034756#1034756) – 2009-06-24 15:03:55

2

選擇允許多個任務。

編輯您44秒

6

基本上打我,SET是設置變量SQL ANSI標準,SELECT不是。 SET僅適用於單個分配,SELECT可以分配多個分配。而不是寫的很好總結了在網上很多地方很長的解釋:

ryan farley blog

tony rogerson

stackoverflow

如果你需要指定多個值
0

選擇也可以被用來從一個SELECT語句中的變量賦值(假設語句只返回一個記錄)

選擇@myvariable = MyField的從我的表其中id = 1

相關問題