Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Обхват на временна таблица?

Първо, локалните временни таблици, създадени в рамките на процедура, се премахват, след като процедурата приключи. От BOL на Create Table :

Ако вашият код за достъп до данни правилно отваря връзка, извиква съхранена процедура и след това затваря връзката, временната таблица, създадена в процедурата, е ефективно унищожена.

Казвам „ефективно“, за да повдигна друга точка. Не бих препоръчал премахване на временната таблица в края на вашата процедура, въпреки че бих добавил проверка точно преди да създам временната таблица и бих я премахнал, ако съществува (напр. if object_id('tempdb..#Foo') is not null ). Аргументът срещу отпадането на временната таблица в края е, че като извиквате оператора Drop, вие принуждавате SQL Server да изразходва ресурси, за да унищожи таблицата тогава и там, докато чакате вашата процедура да приключи. Ако вместо това я оставите да излезе извън обхвата, вашата процедура приключва незабавно и вие позволявате на SQL Server да унищожи таблицата във време по свой собствен избор.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LINQ към SQL:Твърде много използване на процесора:Какво се случва, когато има няколко потребители

  2. име или номер на колона ... не съответства на дефиницията на таблица в таблица, създадена от скрипт за създаване. Показва се грешка при вмъкване на редове от една таблица в друга

  3. Синтаксис за заявка с параметри в Python (pyodbc)

  4. Създайте параметризиран VIEW в SQL Server 2008

  5. Избягване на курсори за актуализиране на много записи с помощта на тригер