2009-06-23 7 views
8

Sto lavorando su un proc memorizzato che esegue alcuni sql dinamici. Ecco l'esempio che ho trovato su 4GuysFromRolla.comQual è la differenza tra SELECT e SET in 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) 

Se notate, stanno usando la parola SELEZIONA intead di SET. Non sapevo che potessi farlo. Qualcuno può spiegarmi le differenze tra i 2? Ho sempre pensato che SELECT fosse semplicemente per selezionare i record.

+1

duplicati di http://stackoverflow.com/questions/866767/set-vs-select-whats-the-difference – shahkalpesh

+0

Non esattamente un duplicato. L'altra domanda riguarda le prestazioni. Stavo chiedendo della differenza linguistica delle parole chiave – Micah

risposta

10

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

SELEZIONA consente a più assignents: ad esempio, selezionare @pippo = 1, @pluto = 2

+0

Il tuo primo punto è contraddetto da molte fonti nella risposta di @ breitak67 (http://stackoverflow.com/questions/1034634/what-is-the-difference-between-select-and-set- in-t-sql/1034756 # 1034756) –

+0

Dannazione! Sto diventando vecchio. Tuttavia, il SELECT è anche in ANSI ora, penso. – gbn

+0

Interessante che Sybase non menzioni SET @var http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.sqlug/html/sqlug/sqlug598.htm – gbn

2

Select consente assegnazioni multiple.

EDIT voi mi ha battuto di 44 secondi

6

In sostanza, SET è standard SQL ANSI per le variabili Impostazioni, selezionare non è. SET funziona solo per assegnazioni singole, SELECT può eseguire più assegnazioni. Piuttosto che scrivere una lunga spiegazione che è ben riassunto in molti luoghi sulla rete:

ryan farley blog

tony rogerson

stackoverflow

0

Select può anche essere usato per ottenere l'assegnazione variabile da una dichiarazione prescelta (supponendo che l'istruzione restituisce solo record)

Selezionare @myvariable = myfield dal mio tavolo dove id = 1

Problemi correlati