none
Como repetir SELECT várias "n" vezes ? T-SQL RRS feed

  • Pergunta

  • Preciso executar o mesmo Select várias vezes, mas não quero usar While.

    Exemplo:

    Select 'A' -> Repetir 3

    A

    A

    A

    Select 'B' -> Repetir 2

    B

    B


    SamirMMBr

    segunda-feira, 8 de outubro de 2012 14:07

Respostas

  • Como assim, Samir? Este exemplo está meio estranho.

    Pra que rodar um Select 'A' 3 vezes?? Qual o objetivo disso? É um Insert baseado num Select?

    De qualquer forma, só pra adiantar, você pode usar o "go" especificando a quantidade de vezes que o batch deve rodar.

    Exemplo:

    Select 'B'
    go 5


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Marcado como Resposta SamirMMBr segunda-feira, 8 de outubro de 2012 17:12
    segunda-feira, 8 de outubro de 2012 14:19
    Moderador

Todas as Respostas

  • Como assim, Samir? Este exemplo está meio estranho.

    Pra que rodar um Select 'A' 3 vezes?? Qual o objetivo disso? É um Insert baseado num Select?

    De qualquer forma, só pra adiantar, você pode usar o "go" especificando a quantidade de vezes que o batch deve rodar.

    Exemplo:

    Select 'B'
    go 5


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    • Marcado como Resposta SamirMMBr segunda-feira, 8 de outubro de 2012 17:12
    segunda-feira, 8 de outubro de 2012 14:19
    Moderador
  • Samir,

    Como assim, quantas vezes?

    Talvez uma query dinâmica possa ajudar.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    segunda-feira, 8 de outubro de 2012 14:20
  • Sim, é um INSERT baseado num SELECT.

    Funcionou.

    select 'B'
    go 5
    

    Porém no lugar do 5 preciso usar uma variável.


    SamirMMBr

    segunda-feira, 8 de outubro de 2012 15:03
  • Sammir,

    Sim, a partir do SQL Server 2005 é possível fazer uso do comando Go informando o número de linhas que gostaríamos de repetir.

    Neste seu caso, você poderia criar uma Stored Procedure, utilizando como parâmetro variáveis que posteriormente seria utilizadas dentro da procedure fazendo com que o SQL Server repita a mesmo Select.

    Observação:

    <content xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5">

    GO não é uma instrução Transact-SQL; é um comando reconhecido pelos
    utilitários sqlcmd e osql e pelo Editor de Códigos do SQL Server
    Management Studio.

    Os utilitários SQL Server interpretam GO como um sinal de que eles
    devem enviar o lote atual de instruções Transact-SQL para uma instância do SQL
    Server. O lote atual de instruções é composto de todas as instruções digitadas
    desde o último GO, ou desde o início da sessão ad hoc ou script, se esse for o
    primeiro GO.

    Uma instrução Transact-SQL não pode ocupar a mesma linha que um
    comando GO. No entanto, a linha pode conter comentários.

    Os usuários precisam seguir as regras de lotes. Por exemplo,
    qualquer execução de um procedimento armazenado depois da primeira instrução em um lote deve incluir a palavra-chave EXECUTE. O escopo de variáveis locais (definidas pelo usuário) é limitado a um lote e não pode ser referenciado após um comando GO.

    </content>

    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]


    segunda-feira, 8 de outubro de 2012 15:25