Ir para conteúdo
Fórum Script Brasil
  • 0

SELECT dinâmico


Vitor Eduardo da Silva

Pergunta

OLá bom dia.

Tem como usar a posição da coluna na tabela ao invés do nome dela no SELECT, preciso fazer isso porque estou gerando um sql dinâmico. Exemplo:

SELECT
    ORDINAL_POSITION,
    COLUMN_NAME,
    (SELECT aqui estará o id da coluna ao invés do nome dela  FROM tabela WHERE id = ORDINAL_POSITION) AS VALUE
    
FROM
    INFORMATION_SCHEMA.COLUMNS
    
WHERE INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 'tabela'

Tá fácil de entender?

Preciso gerar um sql com o id da coluna, o nome dela e o valor que assume em cada linha.

No aguardo

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Vitor,

Tem como você criar sqls dinâmicos... você pode criar variáveis para gerar os sqls a serem executados. Desta forma, conseguirá executar para cada linha.

Para cada valor dinâmico (como a tabela, coluna, Id, etc) pode-se criar uma variável e ir acrescentado no script para execução.

Segue um exemplo e espero q ajude:

declare @sql VARCHAR(100)
declare @variavel VARCHAR(100)

SET @variavel = 'GETDATE()'

SET @sql = 'SELECT ' + @variavel
EXEC (@sql)

Link para o comentário
Compartilhar em outros sites

  • 0

espero ter ajudado

informe apenas o nome da tabela na variável @tabela

--09/02/2012 @THIAGOTHAMIEL / WWW.THIAGOTHAMIEL.COM
DECLARE @TABELA VARCHAR(200)
DECLARE @QTDCOLUNA INT
DECLARE @STRINGCOLUNA VARCHAR(8000)
DECLARE @COL VARCHAR(200)

SET @TABELA = 'INFORME O NOME DA TABELA' -- NOME DA TABELA 
SET @QTDCOLUNA = (SELECT Max(ORDINAL_POSITION)
                  FROM   INFORMATION_SCHEMA.COLUMNS CL
                  WHERE  CL.TABLE_NAME = @TABELA)

DECLARE @INDEX INTEGER

SET @INDEX = 0

WHILE @INDEX < @QTDCOLUNA
  BEGIN
      SET @COL = (SELECT COLUMN_NAME
                  FROM   INFORMATION_SCHEMA.COLUMNS CL
                  WHERE  CL.TABLE_NAME = @TABELA
                         AND ORDINAL_POSITION = @INDEX)

      IF @STRINGCOLUNA IS NULL
        BEGIN
            SET @STRINGCOLUNA = @COL
        END
      ELSE
        BEGIN
            SET @STRINGCOLUNA = ( @STRINGCOLUNA + ',' + @COL )
        END

      SET @INDEX = @INDEX + 1
  END

EXEC ( 'SELECT ' + @STRINGCOLUNA + ' FROM ' + @TABELA)

Editado por THIAGOTHAMIEL
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...