我有这个小曲子来连接表格中的所有列,以便快速编写脚本:
create function [dbo].[get_columns] (@table_name varchar(255))
returns varchar(max)
as
begin
declare @name varchar(255),
@object_id varchar(255),
@string varchar(max)
set @object_id = (select object_id from sys.objects with (nolock) where name = @table_name and type = 'u')
set @string = (select stuff( (
select ', ' + name from sys.columns with (nolock)
where object_id = @object_id
and name != 'row_timestamp'
for xml path ('')),1,2,''))
return @string
end
问题:您将如何重写它以获得视图的列?
为什么有一个表函数和一个单独的视图函数?您可以通过删除限制性过滤器来处理这两个问题
type = 'u'
(实际上您根本不需要sys.objects
)。这是一个带有其他一些小改进的重写:尝试将其包装在一个内联表值函数中
然后加入表信息模式
用于获取视图中的列,如您所说,更改查询信息模式
VIEW_COLUMN_USAGE