Cum să verificați existența unei mese temporare

Samorodov Fedor Anatolievici. Cum să verificați existența unei mese temporare

Cum să verificați existența unei mese temporare

SQL Server poate lucra cu tabele temporare. Numele acestor tabele încep cu una sau două grile (#). Tabelele temporare, evident, au fost inventate pentru stocarea temporară a datelor în ele. De exemplu, pentru a stoca rezultatele intermediare ale oricăror calcule. Sau pentru a transfera unele date de la un proces la altul.







Uneori este necesar să verificați dacă o anumită tabelă temporară a fost deja creată sau nu. Cum se face corect?

Dacă este o tabelă globală temporară, atunci poate fi verificată în mod tradițional - prin vizualizarea listei de tabele. Doar nu uitați să faceți o corecție pentru faptul că toate tabelele temporare - atât globale, cât și locale - nu sunt create în baza de date curentă a utilizatorilor, ci în baza de date a sistemului TempDB.

Uită-te la exemplu. Un proces a creat un tabel temporar global. Acum, acest proces și toate celelalte procese se pot referi la el ca la o masă obișnuită. În special, aceștia o vor vedea în cataloagele de sistem sys.Tables și Information_Schema.Tables.

Cum să verificați existența unei mese temporare






E bine. Cu toate acestea, un astfel de mecanism de verificare nu funcționează dacă este o tabelă temporară locală. La urma urmei, aceste tabele sunt create individual pentru fiecare sesiune, iar în diferite sesiuni pot fi tabele cu aceleași nume. Că nu a existat niciun conflict de nume, serverul redenumește tabelele locale, creându-le în TempDB.

Deci, am creat tabele temporare locale cu aceleași nume în două sesiuni. În fiecare sesiune serverul distinge tabelul de ceilalți, dar în directoarele de sistem acestea sunt vizibile simultan:

Cum să verificați existența unei mese temporare

Dacă vă uitați atent, puteți vedea că serverul adaugă un sfârșit unic la numele tabelului, conform căruia determină tabelul în care acesta este:

Cum să verificați existența unei mese temporare

Nu ar fi de dorit să ne deranjeze aceste terminații în codul SQL. De asemenea, nu este necesar. Pentru că avem funcția Object_ID. care selectează automat tabelul solicitat:

Cum să verificați existența unei mese temporare

Dacă există un obiect cu un nume dat, atunci funcția Object_ID își returnează identificatorul și, dacă nu, NULL. Astfel, putem verifica în mod convenabil și fiabil prezența unui obiect neobișnuit ca și o masă temporară locală:

Cum să verificați existența unei mese temporare

Această funcție are un al doilea parametru opțional, pe care îl puteți utiliza pentru a specifica un anumit tip de obiect. "U" înseamnă că căutăm o masă.







Trimiteți-le prietenilor: