T-SQL для получения определения столбца представления - PullRequest
0 голосов
/ 08 июля 2019

Я обнаружил множество мест, которые имеют сходства, но ни одно из них на самом деле не приближается к тому, что я ищу, - это получение фактического определения отдельных столбцов представления (по сравнению с полным определением представления).

Учитывая следующий пример, я пытаюсь получить определение каждого из столбцов представления отдельно.

CREATE TABLE [dbo].[TEST_TABLE]
(
    [id] int NOT NULL,
    [created] datetime NULL,
    [counts] int NULL,
    [url] varchar(20) NULL
);
GO

CREATE VIEW [dbo].[TEST_VIEW]
WITH SCHEMABINDING 
AS
    SELECT [id] AS [id]
    , CONVERT( varchar(16), [created], 107 ) AS [created]
    , CONVERT( varchar(20), [counts] ) + ' - ' + [url] AS [url]
    FROM [dbo].[TEST_TABLE];
GO

DROP VIEW [dbo].[TEST_VIEW];
DROP TABLE [dbo].[TEST_TABLE];
GO

Результат, который я ищу, похож на это:

name    definition
------- ------------------------------------------------
id      [id]
created CONVERT( varchar(16), [created], 107 )
url     CONVERT( varchar(20), [counts] ) + ' - ' + [url]

Любая помощь в сближении с этим будет высоко оценена, так как я боролся с этим уже весь день. Я могу получить полное определение представления, но столбцы могут быть довольно беспорядочными, чтобы попытаться выйти:

SELECT sysmod.definition AS [View Definition]
FROM sys.sql_modules sysmod
INNER JOIN sys.objects sysob ON ( sysmod.object_id = sysob.object_id )
INNER JOIN sys.schemas syssh ON ( sysobj.schema_id = syssch.schema_id )
WHERE sysob.name = N'TEST_VIEW'
AND syssh.name = N'dbo';

Что-то вроде sys.computed_columns, но для представлений было бы абсолютно идеально.

...