Início > SQL Server > Insert SQL 2008 – SubQueries

Insert SQL 2008 – SubQueries

No nosso ambiente de desenvolvimento estamos utilizando o SQL Server 2008.

Peguei um script que estava dando erro em nosso cliente, fui testar, aqui funciona, lá não funciona.

Resumo, no SQL Server 2008 são permitidos inserts utilizando subqueries, coisa que não era permitida no SQL Server 2005.

Por ex:

A consulta abaixo não funciona no SQL Server 2005

DECLARE @Tab TABLE(ID Int)

INSERT INTO @Tab(ID) VALUES((SELECT 1))

Msg 1046, Level 15, State 1, Line 3

Subqueries are not allowed in this context. Only scalar expressions are allowed.

Já no SQL Server 2008:

DECLARE @Tab TABLE(ID Int)

INSERT INTO @Tab(ID) VALUES((SELECT 1))

(1 row(s) affected)

Portanto fique alerta, para as construções dos seus inserts…

Anúncios
Categorias:SQL Server
  1. Gustavo
    1 de dezembro de 2008 às 19:19

    Oi Fabiano,
     
    Legal. Não conhecia essa

  2. Bruno Costa
    2 de dezembro de 2008 às 20:19

    Oi Fabiano.Cara eu uso insert com subquery desde o SQL2000 (antes disso desconheço). Seu exemplo no SQL2000/2005 ficaria assim:DECLARE @Tab TABLE(ID Int) INSERT INTO @Tab(ID) SELECT 1No MySQL é possível inserts desse tipo: INSERT INTO TABELA(ID) VALUES(1),(2),(3)…Isso é um padrão não implementado no MSSql que talvez esteja agora na versão 20008.Abraços.

  3. Fabiano Neves
    3 de dezembro de 2008 às 9:16

    Pois é, sim isso foi implementado no SQL 2008, se chama Row Constructors… Em relação ao seu insert, na verdade o SELECT 1 não é uma SubQuery, é uma consulta comum, uma subQuery seria um, select (select 1)ao invez deselect 1

  4. 20 de janeiro de 2011 às 16:09

    Fabiano Neves, não sei se poder me ajudar
    tenho um bd feito como planilha por um amador,kkkk.
    e quero buscar os dados para o meu devidamente normalizado.
    dai vem a duvida tenho como consulta-lo ja gerando um insert pra meu bd?

    grato

  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: