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

4 начина да получите дефиниция на изглед с помощта на Transact-SQL

Тази статия представя 4 начина за използване на T-SQL за получаване на дефиницията на изглед в SQL Server.

Дефиницията на изгледа е действителният израз на T-SQL, използван за създаване на изгледа.

Пример 1 – Изгледът на системния каталог sys.sql_modules

sys.sql_modules Изгледът на системния каталог връща ред за всеки обект, който е модул, дефиниран от SQL език в SQL Server.

С други думи, можете да използвате този изглед, за да върнете информация за обекти от различни типове, включително функции, съхранени процедури и, разбира се, изгледи.

Една от колоните, върнати с този изглед, се нарича definition . Както подсказва името, това връща дефиницията на обекта.

SELECT definitionFROM sys.sql_modulesWHERE object_id =object_id('Website.Customers');

Резултат:

+--------------+| определение ||--------------|| CREATE VIEW Website.CustomersASSELECT s.CustomerID, s.CustomerName, sc.CustomerCategoryName, pp.FullName AS PrimaryContact, ap.FullName AS AlternateContact, s.PhoneNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber. , c.CityName КАТО CityName, s.DeliveryLocation КАТО DeliveryLocation, s.DeliveryRun, s.RunPositionFROM Sales.Customers КАТО SLEFT OUTER JOIN Sales.CustomerCategories AS scON s.CustomerCategoryID =sc.CustomerCategoryID =sc.CustomerCategoryID sc.CustomerCategoryID sc.CustomerCategoryApp. PrimaryContactPersonID =pp.PersonIDLEFT OUTER JOIN [Application].People AS apON s.AlternateContactPersonID =ap.PersonIDLEFT OUTER JOIN Sales.BuyingGroups КАТО bgON s.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID s. DeliveryMethodIDLEFT OUTER JOIN [Application].Cities AS con s.DeliveryCityID =c.CityID |+--------------+(1 row affe цитирано)

Използвах интерфейс на командния ред (CLI) с този пример, така че резултатът е добре форматиран.

Ако използвате GUI (като SSMS или Azure Data Studio), за да върнете резултатите в мрежа, дефиницията вероятно ще бъде върната в един дълъг ред в една клетка. В такива случаи ще трябва да свършите допълнителна работа, ако искате да се показва в по-четлив формат. Като алтернатива можете да използвате sp_helptext метод по-долу.

Пример 2 – Системната запаметена процедура sp_helptext

Друг метод за връщане на дефиницията на изглед е използването на sp_helptext системна съхранена процедура. Освен че връща дефиницията за изглед, той може също така да върне дефиницията на дефинирано от потребителя правило, по подразбиране, нешифрована T-SQL съхранена процедура, дефинирана от потребителя Transact-SQL функция, тригер, изчислена колона, CHECK ограничение или системен обект, като например системна съхранена процедура.

Както бе споменато в предишния пример, тази съхранена процедура показва дефиницията на изгледа в множество редове. Всеки ред съдържа 255 знака от дефиницията на T-SQL.

Пример:

EXEC sp_helptext 'Уебсайт.Клиенти';

Ето резултата, който получавам, когато използвам GUI (Azure Data Studio):

И ето какво получавам с моя интерфейс на командния ред:

+--------+| Текст ||--------|| || СЪЗДАВАНЕ НА ИЗГЛЕД Уебсайт.Клиенти || КАТО || ИЗБЕРЕТЕ s.CustomerID, || s.Име на клиента, || sc.CustomerCategoryName, || pp.FullName AS PrimaryContact, || ap.FullName AS AlternateContact, || s.Телефонен номер, || s.FaxNumber, || bg.BuyingGroupName, || s.URL на уебсайта, || dm.DeliveryMethodName AS Метод на доставка, || c.CityName AS Име на град, || s.DeliveryLocation AS Местоположение на доставка, || s.DeliveryRun, || s.RunPosition || ОТ Sales.Customers AS s || LEFT OUTER JOIN Sales.CustomerCategories AS sc || ON s.CustomerCategoryID =sc.CustomerCategoryID || LEFT OUTER JOIN [Application].People AS pp || ON s.PrimaryContactPersonID =pp.PersonID || LEFT OUTER JOIN [Приложение]. Хора КАТО ap || ON s.AlternateContactPersonID =ap.PersonID || LEFT OUTER JOIN Sales.BuyingGroups AS bg || ON s.BuyingGroupID =bg.BuyingGroupID || LEFT OUTER JOIN [Application].DeliveryMethods AS dm || ON s.DeliveryMethodID =dm.DeliveryMethodID || LEFT OUTER JOIN [Приложение].Cities AS c || ON s.DeliveryCityID =c.CityID |+--------+

Този път резултатите изглеждат по-добре при използване на GUI.

Пример 3 – Функцията OBJECT_DEFINITION()

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

Ето пример за използване на тази функция:

SELECT OBJECT_DEFINITION( OBJECT_ID('Уебсайт.Клиенти') ) КАТО [Дефиниция];

Резултат:

+--------------+| Определение ||--------------|| CREATE VIEW Website.CustomersASSELECT s.CustomerID, s.CustomerName, sc.CustomerCategoryName, pp.FullName AS PrimaryContact, ap.FullName AS AlternateContact, s.PhoneNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber. , c.CityName КАТО CityName, s.DeliveryLocation КАТО DeliveryLocation, s.DeliveryRun, s.RunPositionFROM Sales.Customers КАТО SLEFT OUTER JOIN Sales.CustomerCategories AS scON s.CustomerCategoryID =sc.CustomerCategoryID =sc.CustomerCategoryID sc.CustomerCategoryID sc.CustomerCategoryApp. PrimaryContactPersonID =pp.PersonIDLEFT OUTER JOIN [Application].People AS apON s.AlternateContactPersonID =ap.PersonIDLEFT OUTER JOIN Sales.BuyingGroups КАТО bgON s.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID s. DeliveryMethodIDLEFT OUTER JOIN [Application].Cities AS con s.DeliveryCityID =c.CityID |+--------------+

Този път е по-лесно за четене в моя CLI, отколкото в моята GUI мрежа.

Пример 4 – Изгледът на схемата за информация за системата VIEWS

VIEWS Изгледът на схемата за системна информация може също да върне дефиницията на изглед. Една разлика между този метод и предишните е, че VIEWS Изгледът на информационната схема е ограничен само до изгледи (както подсказва името).

Връща куп колони, една от които е дефиницията на изгледа. Следователно можем да назовем тази колона, за да върнем само дефиницията:

SELECT VIEW_DEFINITIONFROM INFORMATION_SCHEMA.VIEWSWHERE TABLE_NAME ='Клиенти';

Резултат:

+------------------+| ПРЕГЛЕД_ДЕФИНИЦИЯ ||-------------------|| CREATE VIEW Website.CustomersASSELECT s.CustomerID, s.CustomerName, sc.CustomerCategoryName, pp.FullName AS PrimaryContact, ap.FullName AS AlternateContact, s.PhoneNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber, s.FaxNumber. , c.CityName КАТО CityName, s.DeliveryLocation КАТО DeliveryLocation, s.DeliveryRun, s.RunPositionFROM Sales.Customers КАТО SLEFT OUTER JOIN Sales.CustomerCategories AS scON s.CustomerCategoryID =sc.CustomerCategoryID =sc.CustomerCategoryID sc.CustomerCategoryID sc.CustomerCategoryApp. PrimaryContactPersonID =pp.PersonIDLEFT OUTER JOIN [Application].People AS apON s.AlternateContactPersonID =ap.PersonIDLEFT OUTER JOIN Sales.BuyingGroups КАТО bgON s.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID =bg.BuyingGroupID s. DeliveryMethodIDLEFT OUTER JOIN [Application].Cities AS con s.DeliveryCityID =c.CityID |+-------------------+ 

Имайте предвид, че VIEW_DEFINITION колоната в този системен изглед има максимална дължина от nvarchar(4000) . За дефиниции на изглед, по-големи от това, можете да използвате OBJECT_DEFINITION() функция в предишния пример.

Връщаната стойност на OBJECT_DEFINITION() функцията е nvarchar(max) , така че няма ограничението за знаци на VIEW_DEFINITION колона (която, както споменахме, е nvarchar(4000) ).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Репликация на данни в IRI Workbench

  2. Маскиране на данни в DB приложения

  3. Основи на табличните изрази, част 5 – CTEs, логически съображения

  4. Как да ускорим SQL заявките

  5. Как да преброите различни стойности в SQL