В 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 '#%';