Eu tenho esta pequena cantiga para concatenar todas as colunas em uma tabela, para escrever scripts rapidamente:
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
Pergunta: como você reescreveria isso para obter as colunas de uma visão?
Por que ter uma função para tabelas e uma função separada para visualizações? Você pode lidar com ambos apenas removendo o filtro restritivo
type = 'u'
(e, na verdade, você não precisasys.objects
). Aqui está uma reescrita com algumas outras pequenas melhorias:Tente envolver isso em funções com valor de tabela inline
em seguida, junte-se ao esquema de informações da tabela
para obter as colunas em uma visão como você disse, altere a consulta o esquema de informações
VIEW_COLUMN_USAGE