【发布时间】:2020-09-02 12:19:12
【问题描述】:
我写了如下代码:
DECLARE @SQL nvarchar(max);
DECLARE @ColumnList nvarchar(max);
DECLARE @SampleTable nvarchar(max);
SET @SampleTable = 'dbo.CourseType' --HERE I'LL BE GIVING LIST OF TABLES
SELECT
@ColumnList = (SELECT STUFF((SELECT N', ' + QOUTENAME(c.name)
FROM sys.columns c
INNER JOIN sys.objects o ON c.object_id = o.object_id
WHERE o.name = @SampleTable
AND c.name NOT IN ('ID', 'Number')
ORDER BY c.column_id
FOR XML PATH(''), TYPE).value('text()[1]', 'nvarchar(max)'), 1, 2, N''))
SELECT @ColumnList
从此脚本中,我将获得除列ID、Number 之外的所有列的列表。现在我想做的是阅读这个列列表,即[Name], [Description], [SortOrder], [BusinessName], [Obsolete],下面列出了一些临时列:
NULL AS EntityID,
NULL AS ModifiedBy,
NULL AS CreatedBy
查询结果应如下所示:
Name Description SortOrder BusinessMeaningName Obsolete EntityID ModifiedBy CreatedBy
Inviern Cursos de Invierno de Pregrado 1 AcademicPeriodType.Invierno 0 NULL NULL NULL
Lectivo Cursos Lectivos de Pregrado 0 AcademicPeriodType.Lectivo 0 NULL NULL NULL
Verano Cursos de Verano de Pregrado 1 AcademicPeriodType.Verano 0 NULL NULL NULL
我知道我可以直接通过为一两个表选择具有临时列的列的名称来执行此操作。但我必须为一大堆桌子这样做。我想不出办法。
现在我不知道如何在 select 语句中添加EntityID, CreatedBy, ModifiedBy。我试过做这样的事情。
SET @SQL = 'SELET '
+ @ColumnList
+ ' FROM ' + @SampleTable;
EXEC sp_executesql @SQL;
谁能帮帮我?
【问题讨论】:
标签: sql-server tsql multiple-columns