Usuário com melhor resposta
Select sys.columns + valores.

Pergunta
-
Ola,
Pessoal consigo fazer um procedure com o sys.columns tabela, concatenando valores das colunas?
Queria criar uma coisa mais dinâmica, é possível?
Obrigado
- Movido welington jr sexta-feira, 26 de maio de 2017 11:10 postado lugar errado
Respostas
-
Bom dia Rodrigo Schwinn,
O exemplo do Kanaãm Luz Romero Rodrigues já realizar o inner join e faz o que você precisa, você tentou adequar o modelo dele?
Att., Roberto Alves
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.- Marcado como Resposta Guilherme Macedo S quarta-feira, 31 de maio de 2017 20:58
Todas as Respostas
-
DECLARE @SQL VARCHAR(MAX) DECLARE @TABELA VARCHAR(10) = 'SUA_TABELA' ;WITH CTE AS ( SELECT cl.name FROM sys.objects tb INNER JOIN sys.columns cl ON cl.object_id=tb.object_id WHERE tb.type='U' AND tb.name = @TABELA ), CTE_GROUP AS ( SELECT Stuff((SELECT '],[' + name FROM CTE FOR xml path('')), 1, 1, '') + ']' cols FROM CTE a ) SELECT distinct @SQL = RIGHT(cols,LEN(cols)-1) FROM CTE_GROUP SET @SQL = 'SELECT ' + @SQL + ' FROM '+@TABELA EXEC (@SQL)
Acho que é isso que você está precisando.
Abraço!
"A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski
- Sugerido como Resposta Roberto AB Filho quarta-feira, 31 de maio de 2017 13:13
-
-
Então eu queria algo assism, com o nome da pagina filtro a tabela e pego sua colunas , já com seus dados.
Não sei se uma boa pratica fazer isso.
CREATE PROCEDURE uspTabela ( @Table varchar(255), @idEmpreendimento varchar(255) ) AS BEGIN DECLARE @SchemaName sysname DECLARE @TableName sysname DECLARE @Colname sysname DECLARE @SQL_Template nvarchar(max) DECLARE @SQL nvarchar(max) SET @SchemaName = 'dbo' SET @TableName = @Table CREATE TABLE ##Results(Colname sysname, colvalue varchar(256)) SET @SQL_Template = 'INSERT INTO ##Results(Colname,colvalue ) SELECT top 1 ''@Colname '' as Colname,' + ' CONVERT(nvarchar(256),@Colname) AS ColValue' + ' FROM ['+@SchemaName+'].['+@TableName+']' + 'WHERE [idEmpreendimento] =' + @idEmpreendimento DECLARE COL_CURSOR CURSOR STATIC FOR SELECT c.name FROM sys.schemas s JOIN sys.tables t ON t.schema_id = s.schema_id JOIN sys.columns c ON c.object_id = t.object_id WHERE s.name = @SchemaName AND t.name = @TableName OPEN COL_CURSOR FETCH NEXT FROM COL_CURSOR INTO @Colname WHILE @@FETCH_STATUS =0 BEGIN SET @SQL = REPLACE(@SQL_Template,'@ColName',@ColName) PRINT @SQL EXEC sp_executesql @SQL FETCH NEXT FROM COL_CURSOR INTO @Colname END CLOSE COL_CURSOR DEALLOCATE COL_CURSOR SELECT * FROM ##Results DROP TABLE ##Results END
- Editado Rodrigo Schwinn quinta-feira, 25 de maio de 2017 19:55
-
Bom dia Rodrigo Schwinn,
O exemplo do Kanaãm Luz Romero Rodrigues já realizar o inner join e faz o que você precisa, você tentou adequar o modelo dele?
Att., Roberto Alves
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.- Marcado como Resposta Guilherme Macedo S quarta-feira, 31 de maio de 2017 20:58