Articles

SQLShack (Română)

Posted by admin

SQL Server ne oferă două metode în T-SQL pentru a atribui o valoare unei create anterior locale SQL variabilă. Prima metodă este instrucțiunea SET, instrucțiunea Standard ANSI care este frecvent utilizată pentru atribuirea valorii variabile. A doua declarație este instrucțiunea SELECT., În plus față de utilizarea sa principală pentru a forma logica utilizată pentru a prelua date dintr-un tabel de baze de date sau mai multe tabele în SQL Server, instrucțiunea SELECT poate fi utilizată și pentru a atribui o valoare unei variabile locale create anterior direct sau dintr-o variabilă, vizualizare sau tabel.deși ambele instrucțiuni T-SQL îndeplinesc sarcina de atribuire a valorii variabile SQL, există o serie de diferențe între instrucțiunile setate și selectate care vă pot determina să alegeți una dintre ele în circumstanțe specifice, față de cealaltă., În acest articol, vom descrie, în detaliu, când și de ce să alegem între set și selectați instrucțiunile T-SQL în timp ce atribuim o valoare unei variabile.

vom începe cu crearea unui nou tabel și completați-l cu câteva înregistrări pentru demo-ul nostru.,d folosind următoarea instrucțiune SELECT:

1
SELECTAȚI * DE la SetVsSelectDemo

Iar datele vor fi afișate ca mai jos:

Dacă reușim să atribui o valoare scalară pentru SQL variabilă care este definit anterior folosind DECLARA declarație, ambele SET și SELECTAȚI afirmațiile va atinge obiectivul în același mod.,c47f9″>

1
2
3
4

DECLAR @EmpName2 NVARCHAR(50)
SELECTAȚI @EmpName2 = ‘Ali’
PRINT @EmpName2
GO

valorile atribuite variabilelor din interogări anterioare vor fi tipărite în fila Mesaje așa cum se arată mai jos:

SQL Server ne permite să atribuiți o valoare pentru o variabilă SQL dintr-un tabel de bază de date sau de vedere.,

3
4
DECLAR @EmpName NVARCHAR(50)
SELECTAȚI @EmpName = DE SetVsSelectDemo UNDE GroupNumber = 3
PRINT @EmpName
GO

rezultatele din ultimele două interogări va fi afișat în fila Mesaje așa cum se arată mai jos:

Până în acest moment, puteți vedea că atât SETAȚI și SELECTAȚI declarații pot efectua variabila atribuirea valorii sarcină în același mod și diferă de la codul singura parte.,

variabile SQL multiple

presupunem că trebuie să atribuim valori mai multor variabile la o singură lovitură. Instrucțiunea SET poate atribui valoare unei variabile la un moment dat; aceasta înseamnă că, dacă trebuie să atribuim valori pentru două variabile, trebuie să scriem două declarații SET. În exemplul de mai jos, fiecare variabilă necesită un SET separat declarație pentru a atribui o valoare scalară, înainte de imprimare:

Pe de altă parte, SELECT poate fi folosit pentru a atribui valori definite anterior multiple SQL variabile folosind o instrucțiune SELECT., Mai jos SELECT poate fi cu ușurință folosit pentru a atribui valori scalare pentru cele două variabile, folosind o singură instrucțiune SELECT înainte de imprimare:

puteți vedea de la tipărite rezultatul de mai jos, că ambele declarații realiza aceeași sarcină, cu SELECT mai bine decât SET declarație atunci când încearcă pentru a atribui valori variabilelor multiple din cauza codului simplitate:

din Nou, dacă vom încerca să atribui valorile din tabelul bazei de date pentru variabile multiple, este nevoie de noi SET de declarații egal cu numărul de variabile.,o @EmpName și @EmpGrade variabile așa cum se arată în script-ul de mai jos:

Pe de altă parte, doar un singur SELECT poate fi folosit pentru a atribui valori de SetVsSelectDemo tabelul de la @EmpName și @EmpGrade SQL variabile, folosind mai simplu de interogare cât de clar arată mai jos:

este evident din ultimele două interogări interogarea care este folosind SELECT este mult mai eficient decât folosind un singur SET declarație atunci când atribuirea de valori pentru variabile multiple în același timp, datorită faptului că, SET declarație poate atribui doar o singură variabilă la un moment dat., La rezultate similare din ultimele două întrebări pe care sunt tipărite în fila Mesaje va fi ca mai jos, în cazul nostru:

mai Multe valori

Al doilea punct, în care diferența între atribuirea de valori SQL variabile folosind SELECTAȚI sau SETAȚI declarațiile apare, este atunci când rezultatul set de subinterogare interogare care este folosit pentru a atribui o valoare pentru variabila a se întoarce mai mult decât o singură valoare., În acest caz, instrucțiunea SET va returna o eroare, deoarece acceptă o singură valoare scalară din subquery pentru a o atribui variabilei, în timp ce instrucțiunea SELECT acceptă acea situație, în care subquery va returna mai multe valori, fără a ridica nicio eroare. Cu toate acestea, nu veți avea niciun control asupra valorii care va fi atribuită variabilei, unde ultima valoare returnată din subquery va fi atribuită variabilei.

presupunem că trebuie să atribuim valoarea numelui celui de-al doilea grup din tabelul SetVsSelectDemo creat anterior variabilei SQL @EmpName., Reamintim că cel de-al doilea grup pe masă conține două înregistrări din setul de rezultate așa cum se arată mai jos:

script-ul, care este folosit pentru a atribui @EmpName valoarea variabilei din SetVsSelectDemo tabel folosind SET și SELECTAȚI afirmațiile va fi astfel:

Datorită faptului că, subinterogare declarație a revenit două înregistrări, atribuirea de valori @EmpName SQL variabile folosind SETUL declarație va eșua, ca SET de declarație poate atribui numai o singură valoare a variabilelor.,nu reuși cu nici o eroare, atribuindu-i numele de la cel de-al doilea a revenit înregistrare, care este „Zaid”, pentru variabila așa cum se arată în rezultatul mesajele de mai jos:

putem învăța de la rezultatul anterior că, atunci când te-ai aștepta ca subinterogare va reveni mai mult de o valoare, este mai bine să utilizați SETUL declarație pentru a atribui o valoare pentru variabila de punere în aplicare corespunzătoare mecanismul de tratare a erorilor, mai degrabă decât folosind SELECT care va atribui ultima revenit valoare SQL variabil, cu nici o eroare întors să ne avertizeze că returnate de subinterogare mai multe valori.,

Assign no value

o altă diferență între atribuirea valorilor variabilelor SQL folosind instrucțiunile SET și SELECT, este atunci când subquery-ul care este utilizat pentru a atribui o valoare variabilei return no value. Dacă variabila declarată anterior nu are valoare inițială, atât instrucțiunea SET cât și SELECT vor acționa în același mod, atribuind valoarea nulă acelei variabile.

presupunem că trebuie să atribuim variabila @EmpName, fără valoare inițială, numele celui de-al cincilea grup din tabelul SetVsSelectDemo.,lectDemo UNDE GroupNumber = 5

SELECTAȚI @EmpName CA SELECT_Name
GO

Au nici o valoare inițială pentru @EmpName variabilă, și nu valoarea returnată de subinterogare, o valoare NULĂ va fi atribuit acelei variabile, în ambele cazuri, așa cum se arată clar în rezultatul mesajul de mai jos:

Dacă cele declarate anterior SQL variabilă are o valoare inițială, și subinterogare care este folosit pentru a atribui o valoare pentru variabila a se întoarce nici o valoare, SETAȚI și SELECTAȚI declarație se va comporta în diferite moduri., În acest caz, instrucțiunea SET va înlocui valoarea inițială a variabilei și va returna valoarea nulă. Dimpotrivă, instrucțiunea SELECT nu va suprascrie valoarea inițială a variabilei și o va returna, dacă nu se returnează nicio valoare din subquery-ul de atribuire.,script-ul de mai jos:

Având în vedere faptul că atribuirea subinterogare intors nici o valoare, interogare care utilizează SETUL declarație pentru a atribui o valoare variabilă SQL va suprascrie valoarea inițială a variabilei, se întoarce valoare NULĂ, în timp ce interogarea care a folosit SELECT pentru a aloca valoarea variabilei va păstra valoarea inițială cu nici o schimbare ca nici o valoare returnată de subinterogare, așa cum se arată clar în rezultatele de mai jos:

Concluzie

SQL Server ne oferă două metode principale care sunt folosite pentru a atribui valori SQL variabile., În cele mai multe cazuri, atât instrucțiunile SET, cât și cele SELECT îndeplinesc sarcina de atribuire a valorii variabile fără nicio problemă.,valoarea de subinterogare variabile, cu nici un control din partea ta

  • în Cazul în care atribuirea subinterogare se întoarce nici o valoare, SET declarație va înlocui variabila inițială de valoare NULĂ, în timp ce SELECTAȚI declarație nu va suprascrie valoarea sa inițială
    • Autor
    • Mesajele Recente
    Ahmad Yaseen este un Microsoft de Date de Mare inginer cu cunoștințe profunde și experiență în SQL BI, SQL Server de baze de Date administrative și Dezvoltarea domeniilor de activitate.,
    este expert Microsoft Certified Solution în managementul și analiza datelor, Microsoft Certified Solution Associate în administrarea și dezvoltarea bazelor de date SQL, Azure Developer Associate și Microsoft Certified Trainer.
    De asemenea, el contribuie cu sfaturile sale SQL în multe bloguri.,
    Vezi toate posturile de Ahmad Yaseen

    Ultimele posturi de Ahmad Yaseen (vezi toate)
    • Cum de a monitoriza Azure data Factory – 15 ianuarie 2021
    • Folosind Sursa de Control în Azure data Factory – ianuarie 12, 2021
    • Folosind Template-uri în Azure data Factory – 8 ianuarie 2021

    Leave A Comment