Articles

SQLShack (Italiano)

Posted by admin

SQL Server ci fornisce due metodi in T-SQL per assegnare un valore a una variabile SQL locale creata in precedenza. Il primo metodo è l’istruzione SET, l’istruzione standard ANSI comunemente utilizzata per l’assegnazione di valori variabili. La seconda istruzione è l’istruzione SELECT., Oltre al suo utilizzo principale per formare la logica utilizzata per recuperare i dati da una tabella di database o da più tabelle in SQL Server, l’istruzione SELECT può essere utilizzata anche per assegnare un valore a una variabile locale creata in precedenza direttamente o da una variabile, una vista o una tabella.

Sebbene entrambe le istruzioni T-SQL soddisfino l’attività di assegnazione del valore della variabile SQL, esiste una serie di differenze tra le istruzioni SET e SELECT che possono portare a scegliere una di esse in circostanze specifiche, rispetto all’altra., In questo articolo, descriveremo, in dettaglio, quando e perché scegliere tra le istruzioni SET e SELECT T-SQL mentre si assegna un valore a una variabile.

Inizieremo con la creazione di una nuova tabella e riempirlo con pochi record per la nostra demo.,d utilizzando l’istruzione SELECT seguente:

1
SELECT * FROM SetVsSelectDemo

E i dati saranno come mostrato di seguito:

Se si riesce ad assegnare un valore scalare per la variabile SQL che è definito in precedenza, usando l’istruzione DECLARE, entrambi i SET di istruzioni SELECT permetterà di raggiungere il target nello stesso modo.,c47f9″>

1
2
3
4

DECLARE @EmpName2 di tipo NVARCHAR(50)
SELECT @EmpName2 = ‘Ali’
PRINT @EmpName2
ANDARE

I valori assegnati per le variabili della query precedenti, sarà stampato sulla scheda Messaggi, come illustrato di seguito:

SQL Server ci permette di assegnare il valore ad una variabile SQL da una tabella di database o di vista.,

3
4
DECLARE @EmpName di tipo NVARCHAR(50)
SELECT @EmpName = DA SetVsSelectDemo DOVE GroupNumber = 3
PRINT @EmpName
ANDARE

I risultati di due query precedente verrà visualizzato nella scheda Messaggi, come illustrato di seguito:

Fino a questo punto, si può vedere che sia il SET di istruzioni SELECT in grado di eseguire il valore assegnato alla variabile compito nello stesso modo e si differenziano dal codice solo lato.,

Variabili SQL multiple

Supponiamo di dover assegnare valori a più variabili in un colpo solo. L’istruzione SET può assegnare valore a una variabile alla volta; ciò significa che, se abbiamo bisogno di assegnare valori per due variabili, abbiamo bisogno di scrivere due istruzioni SET. Nell’esempio seguente, ogni variabile richiede un’istruzione SET separata per assegnargli un valore scalare, prima di stamparlo:

D’altra parte, l’istruzione SELECT può essere utilizzata per assegnare valori alle variabili SQL più definite in precedenza utilizzando un’istruzione SELECT., Al di sotto di istruzione SELECT può essere facilmente utilizzato per assegnare valori scalari di due variabili utilizzando un’istruzione SELECT prima di stampare:

Si può vedere dal risultato stampato sotto, che entrambe le affermazioni ottenere la stessa operazione, con l’istruzione SELECT di meglio che l’istruzione SET quando si tenta di assegnare valori a variabili multiple a causa della semplicità del codice:

di Nuovo, se si tenta di assegnare i valori dalla tabella di database a più variabili, ciò richiede il SET di istruzioni pari al numero di variabili.,o @EmpName e @EmpGrade variabili, come mostrato nella seguente script:

d’altra parte, solo una istruzione SELECT può essere utilizzato per assegnare i valori dal SetVsSelectDemo tabella a @EmpName e @EmpGrade variabili SQL, utilizzando query più semplice, come mostrato chiaramente di seguito:

e ‘ ovvio Che da due query precedente che la query che utilizza l’istruzione SELECT è più efficiente rispetto a quella che utilizza l’istruzione SET quando l’assegnazione di valori a variabili multiple allo stesso tempo, a causa del fatto che, l’istruzione SET possibile assegnare solo una variabile alla volta., Risultati simili con i due precedenti interrogazioni che sono stampati nella scheda Messaggi saranno come di seguito nel nostro caso:

Più valori

Il secondo punto, in cui la differenza tra l’assegnazione dei valori alle variabili SQL usando il tasto o il SET di istruzioni viene visualizzata, è quando il set di risultati della sottoquery query che viene utilizzato per assegnare un valore alla variabile restituisce più di un valore., In questo caso, l’istruzione SET restituirà un errore poiché accetta solo un valore scalare dalla subquery per assegnarlo alla variabile, mentre l’istruzione SELECT accetta quella situazione, in cui la subquery restituirà più valori, senza generare alcun errore. Tuttavia, non avrai alcun controllo su quale valore verrà assegnato alla variabile, dove l’ultimo valore restituito dalla sottoquery verrà assegnato alla variabile.

Supponiamo di dover assegnare il valore Name del secondo gruppo dalla tabella SetVsSelectDemo creata in precedenza alla variabile SQL @EmpName., Ricordiamo che il secondo gruppo la tabella contiene due dischi e il risultato, come indicato di seguito:

Lo script che viene utilizzato per assegnare il @EmpName valore variabile da SetVsSelectDemo tabella utilizzando il SET di istruzioni SELECT sarà così:

a Causa del fatto che, l’istruzione di sottoquery restituito due record, assegnando il valore di @EmpName variabile SQL utilizzando il SET di istruzione non riesce, come l’istruzione SET può assegnare solo singolo valore per le variabili.,l successo con nessun errore, assegnando il nome dal secondo record restituito, che è “Zaid”, per la variabile come indicato nel risultato messaggi di seguito:

Possiamo imparare dal risultato precedente che, quando ci si aspetta che la subquery volontà di restituire più di un valore, è meglio utilizzare l’istruzione SET di assegnare il valore alla variabile mediante l’attuazione di un adeguato meccanismo di gestione degli errori, piuttosto che utilizzare l’istruzione SELECT che assegnerà l’ultimo valore restituito per la variabile SQL, con nessun errore restituito per avvertirci che la subquery tornato più valori.,

Assegna nessun valore

Un’altra differenza tra l’assegnazione di valori alle variabili SQL utilizzando le istruzioni SET e SELECT, è quando la sottoquery utilizzata per assegnare un valore alla variabile non restituisce alcun valore. Se la variabile dichiarata in precedenza non ha valore iniziale, sia l’istruzione SET che SELECT agiranno allo stesso modo, assegnando valore NULL a quella variabile.

Supponiamo di dover assegnare alla variabile @EmpName, senza valore iniziale, il Nome del quinto gruppo dalla tabella SetVsSelectDemo.,lectDemo DOVE GroupNumber = 5

SELECT @EmpName COME SELECT_Name
ANDARE

non Avendo valore iniziale per il @EmpName variabile, e nessun valore restituiti dalla subquery, un valore NULL, che sarà assegnato alla variabile in entrambi i casi, come mostrato chiaramente il messaggio di risultato di seguito:

Se precedentemente dichiarato SQL variabile ha un valore iniziale, e la sottoquery che viene utilizzato per assegnare un valore alla variabile restituisce alcun valore, il SET e SELEZIONARE istruzione si comportano in modi diversi., In questo caso, l’istruzione SET sovrascriverà il valore iniziale della variabile e restituirà il valore NULL. Al contrario, l’istruzione SELECT non sovrascriverà il valore iniziale della variabile e lo restituirà, se non viene restituito alcun valore dalla sottoquery di assegnazione.,script riportato di seguito:

Tenendo in considerazione che l’assegnazione di sottoquery restituito alcun valore, la query utilizzata l’istruzione SET per assegnare un valore alla variabile SQL avrà la precedenza il valore iniziale della variabile, restituendo il valore NULLO, mentre la query utilizzata l’istruzione SELECT per assegnare il valore alla variabile manterrà il valore iniziale, con nessun cambiamento come assenza di valori restituiti dalla subquery, come mostrato chiaramente i risultati riportati di seguito:

Conclusione

SQL Server ci fornisce due metodi principali che vengono utilizzati per assegnare i valori alle variabili SQL., Nella maggior parte dei casi, sia le istruzioni SET che SELECT soddisfano l’attività di assegnazione del valore variabile senza problemi.,valore dalla subquery variabile, con nessun controllo dal vostro lato

  • Se l’assegnazione di subquery restituisce alcun valore, l’istruzione SET sovrascrive la variabile iniziale valore NULL, mentre l’istruzione SELECT non ignorare il suo valore iniziale
    • Autore
    • Post Recenti
    Ahmad Yaseen è un Microsoft Big Data ingegnere con una profonda conoscenza ed esperienza in BI SQL, Database SQL Server, Amministrazione e Sviluppo dei campi.,
    È un esperto di soluzioni certificate Microsoft in gestione e analisi dei dati, Microsoft Certified Solution Associate in amministrazione e sviluppo di database SQL, Azure Developer Associate e Microsoft Certified Trainer.
    Inoltre, sta contribuendo con i suoi suggerimenti SQL in molti blog.,
    Visualizza tutti i messaggi di Ahmad Yaseen

    Ultimi messaggi di Ahmad Yaseen (vedi tutti)
    • Come per monitorare Azure Dati di Fabbrica – il 15 gennaio 2021
    • Uso del Controllo del codice Sorgente in Azzurro i Dati di Fabbrica – gennaio 12, 2021
    • Utilizzo di Modelli di Azure Dati di Fabbrica – 8 gennaio 2021

    Leave A Comment