我想创建一个包含很多UNION和相当多列的视图。为简便起见,我想一次定义列列表,然后在视图的T-SQL中多次重复使用它。作为一种观点,我无法声明局部变量。
所以我有一个UDF fnGetColumnList ,不带任何参数返回包含字段列表的nvarchar(max),即'[field1]为[Field 1],[field2]为[Field 2] ' 等等。很好。
我不知道的是,是否可以在创建视图时将其用作列列表。例如,这行不通。
CREATE VIEW [dbo].[myView]
AS
SELECT [dbo].[fnGetColumnList] from [dbo].[table]
GO
这有可能吗?
答案 0 :(得分:0)
我不知道的是是否可以将其用作列 创建视图时列出。
从字面上看,是的,这是可能的。您将必须使用动态SQL创建视图。
您能否拥有此 IN 的视图?不能。您不能使用动态SQL IN 视图的代码。但是您可以使用它来创建视图:
DECLARE @sql nvarchar(max);
SET @sql='
CREATE VIEW dbo.MyViewName
AS
SELECT ' + dbo.MyFunction + '
...
';
EXECUTE (@sql);