none
Como criar uma nova tabela no SQL Compact Edition, a partir de um select RRS feed

  • Pergunta

  • Eu estava desenvolvendo uma aplicação onde eu trabalhava com o Banco SQL Server, mas para facilitar na hora da instalação e utilização resolvi mudar para SQL Compact, pois o computador onde vou usar essa aplicação não tem SQL Server instalado. 

    Bom minha duvida é a seguinte, com SQL Server eu usava a seguinte expressão para verificar a existência de uma tabela e gerar outra com um SELECT INTO, mas no SQL Compact essa expressão não funcionou.

    Segue a expressão utilizada no SQL Server :

    IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tab_classifica]') AND type in (N'U'))

    DROP TABLE [dbo].[tab_classifica]

    IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tab_classifica]') AND type in (N'U')) begin

    select COLOCAÇÃO = IDENTITY(int , 1, 1), NOME,ESCOLA,TOTAL  into tab_classifica from tabAtleta where NIVEL = 'NIVEL 1' and CATEGORIA = 'INFANTIL' and SEXO = 'MASCULINO' order by TOTAL desc,SOLO desc

    alter table tab_classifica add PONTOS int

    end 

    Essa expressão funcionava no SQL Server, agora eu preciso fazer alguma coisa para gerar uma tabela no SQL Compact, onde eu verifico a existência da tabela, apago ela caso exista, e gere novamente, com os novos dados.

    Obrigado !

    segunda-feira, 14 de julho de 2014 15:34

Respostas

Todas as Respostas

  • Deleted
    segunda-feira, 14 de julho de 2014 18:03
  • @Lerandro

    Como apontado pelo Jose, não é possível utilizar SELECT INTO no SQL Compact. 

    A forma para se fazer isso é mesmo através de INSERT INTO SELECT FROM.

    Segue um link de referência:

    http://smilingsmith.blogspot.com.br/2010/05/sql-compact-table-copy.html

    Até mais,


    TP.

    segunda-feira, 14 de julho de 2014 20:55
  • ola primeiramente obrigado pelas respostas.

    Testei o código e apenas a parte do IF não funcionou.

    tem alguma outra forma de verificar a existência de uma tabela ?

    Obrigado

    terça-feira, 15 de julho de 2014 01:25
  • Bom a parte do If, eu  provavelmente não vou utilizar mais, alterei algumas coisas no programa, não sendo mais necessário verificar a existência da tabela. 

    Mas nem todos os inserts estão funcionando por exemplo esse:

    INSERT into tab_pontos1MM  (ESCOLA, PONTOS ) SELECT ESCOLA, SUM (PONTOS) AS PONTOS FROM tab_classifica GROUP BY ESCOLA  ORDER BY SUM (PONTOS) DESC

    se algum puder dar uma ajuda agradeço...

    obrigado. 

    terça-feira, 15 de julho de 2014 06:57
  • Deleted
    terça-feira, 15 de julho de 2014 13:34
  • Deleted
    terça-feira, 15 de julho de 2014 13:40
  • Testei o código e apenas a parte do IF não funcionou.

    tem alguma outra forma de verificar a existência de uma tabela ?

    Qual foi a mensagem de erro?

    A messgem de erro é essa:

    Query 1 : There was an arror parsing the query. [Token line number = 1, Token in error=IF

    Leandro, a forma que utilizava:

       IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tab_classifica]') AND type in (N'U'))
          DROP TABLE [dbo].[tab_classifica]

    funciona?

    Funcionava no SQL Server 2012.

    Se funcionar, utilize-a.

    Qual é a versão do SQL Server Compact?

    eu estou utilizando a versão SQL Compact Edition 4.0



        José Diz     Belo Horizonte, MG - Brasil
    (Se encontrou a solução nesta resposta, ou se o conteúdo foi útil, lembre-se de marcá-la)



    terça-feira, 15 de julho de 2014 14:34
  • Eu sei que não faz sentido inserir já ordenando, mas é que o campo colocação é identity, assim ele ja colocaria na ordem. 

    Eu estou iniciando em banco de dados, comecei essa matéria esse ano na faculdade, no próximo semestre devo aprender mais coisas sobre SQL, mas por enquanto eu ainda não sei numerar uma coluna na ordem, de acordo com o retorno do select.

    Eu preciso numerar a coluna COLOCAÇÃO de acordo com a pontuação da pessoa. 


    terça-feira, 15 de julho de 2014 14:49
  • Deleted
    terça-feira, 15 de julho de 2014 21:17
  • Alguma novidade @Lerandro?

    Caso tenha resolvido o seu problema marque a resposta para fechar a thread.

    Até mais,


    TP.

    quinta-feira, 17 de julho de 2014 17:35