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

5 начина за изброяване на временни таблици с помощта на T-SQL

В SQL Server можете да използвате всеки от следните пет начина за връщане на списък с временни таблици с помощта на Transact-SQL.

Те връщат както локални, така и глобални временни таблици.

Опция 1 – sys.tables

sys.tables Изгледът на системния каталог е проектиран специално за връщане на информация за таблицата.

SELECT name
FROM tempdb.sys.tables
WHERE name LIKE '#%';

Както при всички изгледи на тази страница, тъй като искаме информация за временни таблици, трябва да потърсим този изглед в tempdb база данни. Можем да направим това или като първо преминем към тази база данни (така че тя да е текущата ни база данни), или квалифицираме нашата заявка с името на базата данни.

В този пример квалифицирам заявката с името на базата данни.

Вариант 2 – sys.objects

Можете също да използвате sys.objects изглед на системния каталог. Ако изберете тази опция, ще трябва да я филтрирате по тип, така че да се връщат само потребителски таблици.

SELECT name 
FROM tempdb.sys.objects
WHERE type = 'U';

U означава „Потребителска таблица“. Алтернативен начин да направите това е да използвате WHERE type_desc = 'USER_TABLE' .

Опция 3 – INFORMATION_SCHEMA.TABLES

Ако искате стандартна опция за ANSI, използвайте INFORMATION_SCHEMA.TABLES изглед. Ако изберете тази опция, ще трябва също да я филтрирате по тип, така че да се връщат само „основни таблици“.

SELECT TABLE_NAME
FROM TempDB.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'Base Table';

Опция 4 – sp_tables

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

USE tempdb;
EXEC sp_tables '#%';

Можете също така изрично да включите имената на аргументите.

USE tempdb;
EXEC sp_tables 
  @table_name = '#%',
  @table_owner = 'dbo',
  @table_qualifier = 'tempdb',
  @table_type = "'TABLE'",
  @fUsePattern = 1;

Ще забележите, че преминах към tempdb преди да изпълня тази процедура, въпреки че предоставих базата данни като един от аргументите. Това всъщност се изисква. @table_qualifier аргументът трябва да съвпада с текущата база данни.

Също така имайте предвид, че @fUsePattern шаблонът трябва да е 1 в този случай, защото използвам заместващ знак в името на таблицата. Задаване на 1 позволява съвпадение на шаблони. Задаване на 0 ще деактивира съвпадението на шаблони.

Опция 5 – dbo.sysobjects

Това вероятно не трябва да е опция, но все пак ще го изброя. dbo.sysobjects изгледът е включен само в SQL Server за обратна съвместимост. Той е маркиран за оттегляне и Microsoft съветва да не го използвате. Ако го срещнете в кода си, може би помислите да го промените на една от предишните опции.

Във всеки случай, ето как изглежда:

SELECT name
FROM tempdb..sysobjects
WHERE name LIKE '#%';

Ако се чудите за какво служи двойната точка (.. ), това е бърз начин за определяне на схемата по подразбиране. В този случай схемата по подразбиране е dbo , така че можем да напишем и следното:

SELECT name
FROM tempdb.dbo.sysobjects
WHERE name LIKE '#%';

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

  2. Система за управление на големи бази данни:проектиране и архитект

  3. Проверка на състоянието на Exadata с помощта на Exachk Utility

  4. Какво е NoSQL и как се използва?

  5. SQL Always On Availability Groups:Компютърни обекти