none
Erro em Insert no SQL Server RRS feed

  • Pergunta

  • Tá me a dar este erro e penso que seja com a sequencia ( '' ) mas nao sei como resolver.
    A funcao do primeiro ( ' ) era para fazer o escape do segundo ( ' ) mas nao sei de está certo ou se o erro é em outro ponto.

    INSERT INTO Unidade (Nome, AliasNome, Observacao) VALUES ('aaa''aaa', '', '')

    Erro: Incorrect syntax near 'aaa'.


    Agradeço a disponibilidade para m ajudarem...
    Cumprs Tiago



    quinta-feira, 15 de outubro de 2009 09:49

Respostas

  • Olá Tiago,

    Segue exemplo criado de acordo com a sua necessidade.

    OBS: Você queria com as aspas na frente também?

    --CRIAÇÃO DA ENTIDADE TEMPORÁRIA

    CREATE TABLE  #T_DescricaoServico

          (

                 Fn_Id TINYINT

                      PRIMARY KEY

                ,Ft_Codigo VARCHAR(5)

                ,Ft_Nome VARCHAR(30)

                ,Ft_Alias VARCHAR(30)

          )

    GO

    --INSERINDO UM CÓDIGO

    INSERT INTO #T_DescricaoServico(Fn_Id)

          VALUES(15)

    GO

    --ATUALIZAÇÃO DE REGISTRO

    UPDATE #T_DescricaoServico  

       SET Ft_Codigo = '', Ft_Nome = '''Manutenção (Hora''s)', Ft_Alias = '''Manutencao_(Hora''s)'

     WHERE Fn_Id = 15

    GO

    --CONSULTA

    SELECT * FROM #T_DescricaoServico

    Resultado.

    Fn_Id Ft_Codigo Ft_Nome                        Ft_Alias

    ----- --------- ------------------------------ ------------------------------

    15              'Manutenção (Hora's)           'Manutencao_(Hora's)

     

    (1 row(s) affected)

    Caso tenha lhe ajudado não se esqueça de marca como útil, só assim ajudará a melhorar a qualidade do fórum.

    Heberton Melo
    MCP | MCTS em SQL Server 2008 | Projetista de Dados

    Blog: http://heberton-melo.spaces.live.com

    • Marcado como Resposta Tiago D. Araújo terça-feira, 20 de outubro de 2009 14:30
    terça-feira, 20 de outubro de 2009 14:20

Todas as Respostas

  • Olá Tiago,

    Você poderia explicar melhor o que você deseja implementar? Qual realmente o seu problema?

    Qualquer dúvida é só publicar, estarei sempre à disposição para melhor lhe atender.

    Caso tenha lhe ajudado não se esqueça de marca como útil, só assim ajudará a melhorar a qualidade do fórum.

    Heberton Melo
    MCP | MCTS em SQL Server 2008 | Projetista de Dados

    Blog: http://heberton-melo.spaces.live.com

    quinta-feira, 15 de outubro de 2009 11:28
  • Ola Tiago,

    conforme disse o Heberton explique melhor sua dúvida, se possível exemplifique, fix um exemplo abaixo e como poderá observar não tem problemas.

    declare @Unidade as table (Nome varchar(20),AliasNome varchar(20),Observacao varchar(20))
    
    INSERT INTO @Unidade  (Nome, AliasNome, Observacao) VALUES ('aaa''aaa', '', '')
    select * from @Unidade
    


    Att.
    Marcelo Fernandes
    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    quinta-feira, 15 de outubro de 2009 11:36
  • Desde ja queria agradecer o tempo que diponiblizaram para mim.

    É o seguinte eu tenho uma função em visual basic em que eu passo para ela a tabela os campos para o INSERT e os respectivos valores dos campos para ela inserir na tabela. E ela com isso gera-me uma string SQL e em seguida essa string é executada.

    Essa funcao faz muitas coisas como por as datas num formato que o SQL reconhece, põe peliscas(') nas strings, manipula os balores booleanos e tudo mais. E para alem disso faz o Escape String dos valores. Passo a espelicar.

    O Valor que quero guardar no campo ft_Nome é (aaa'aaa) e depois de passar na funcao de EscapeString o resultado é ('aaa''aaa').
    Ela ta a duplicar a pelica(') que é para o SQL reconhecer que tem que guardar aquela pelica. Mas nao sei se esta é a maneira correcta de se fazer isso.

    Alguem me pode explicar melhor isso de Escape String no SQL, nao tou muito a vontade com isso e tou a ter alguns problemas nesse sentido.


    A string que a função gera é a seguinte:

    INSERT INTO t_Unidade (ft_Nome, ft_AliasNome, ft_Observacao) VALUES ('aaa''aaa', '', '')

    E gera-me o seguinte erro: Incorrect Syntax 'aaa'

    sábado, 17 de outubro de 2009 12:30
  • Olá Tiago,

    Qual a forma que você realmente quer armazenar? Pelo que entendi você quer armazenar no banco da seguinte forma. 'Tiago''Araujo'.

    Se for realmente desta forma você deve verificar sua função que esta a colocar as aspas simples no valor do campo.

    OBS: Para retorna aspas simples em uma consulta você deve seguir a seguinte regra básica, uma aspa simples o mesmo deve ser representada por duas aspas juntas coloca entre outra do lado direito e do lado esquerdo.

    Veja o exemplo que segue.


    Exemplo: 1 aspa  = ''''
    Exemplo: 2 aspas = ''''''
    Exemplo: 3 aspas = ''''''''

    Segue um exemplo para lhe auxiliar na colocação das mesmas com base no meu entendimento de sua necessidade.


    SELECT
    '''Heberton''''Melo''' AS [Nome]

    Resultado.

    Nome

    ----------------

    'Heberton''Melo'

     

    (1 row(s) affected)

    Qualquer dúvida é só publicar, estarei sempre à disposição para melhor lhe atender.

    Caso tenha lhe ajudado não se esqueça de marca como útil, só assim ajudará a melhorar a qualidade do fórum.

    Heberton Melo
    MCP | MCTS em SQL Server 2008 | Projetista de Dados

    Blog: http://heberton-melo.spaces.live.com
     

     

    sábado, 17 de outubro de 2009 14:27
  • Heberton obrigado pela ajuda mesmo, mas continua a nao resolver o problema...

    Vou por mais um exemplo se alguem souber que me ajude, nao sei mesmo mais que fazer.

    UPDATE    t_DescricaoServico
    SET              ft_Codigo = '', ft_Nome = 'Manutenção (hora's)',  ft_Alias = 'manutencao_(hora's)'
    WHERE     fn_id = 15

    O erro:
    Erro Source: .Net SqlClient Data Provider
    Erro Mensage: Incorrect syntax near 's'.

    Eu quero guardar no campo ft_Nome  >> 'Manutenção (hora's) << , mas o SQL a confundir a (') da hora's com uma pelica de fim da string.

    agradeco a ajuda.
    terça-feira, 20 de outubro de 2009 13:57
  • Olá Tiago,

    Segue exemplo criado de acordo com a sua necessidade.

    OBS: Você queria com as aspas na frente também?

    --CRIAÇÃO DA ENTIDADE TEMPORÁRIA

    CREATE TABLE  #T_DescricaoServico

          (

                 Fn_Id TINYINT

                      PRIMARY KEY

                ,Ft_Codigo VARCHAR(5)

                ,Ft_Nome VARCHAR(30)

                ,Ft_Alias VARCHAR(30)

          )

    GO

    --INSERINDO UM CÓDIGO

    INSERT INTO #T_DescricaoServico(Fn_Id)

          VALUES(15)

    GO

    --ATUALIZAÇÃO DE REGISTRO

    UPDATE #T_DescricaoServico  

       SET Ft_Codigo = '', Ft_Nome = '''Manutenção (Hora''s)', Ft_Alias = '''Manutencao_(Hora''s)'

     WHERE Fn_Id = 15

    GO

    --CONSULTA

    SELECT * FROM #T_DescricaoServico

    Resultado.

    Fn_Id Ft_Codigo Ft_Nome                        Ft_Alias

    ----- --------- ------------------------------ ------------------------------

    15              'Manutenção (Hora's)           'Manutencao_(Hora's)

     

    (1 row(s) affected)

    Caso tenha lhe ajudado não se esqueça de marca como útil, só assim ajudará a melhorar a qualidade do fórum.

    Heberton Melo
    MCP | MCTS em SQL Server 2008 | Projetista de Dados

    Blog: http://heberton-melo.spaces.live.com

    • Marcado como Resposta Tiago D. Araújo terça-feira, 20 de outubro de 2009 14:30
    terça-feira, 20 de outubro de 2009 14:20
  • Obrigado Heberton Melo!!!

    Consegui resolver um erro com a tua ajuda que pelos vistos já se estava a arrastar por alguns anos e nunca ninguem reparou nele.

    Cumprimentos Tiago Araújo
    terça-feira, 20 de outubro de 2009 14:34
  • Olá Tiago,

    Fico grato pelo retorno, qualquer coisa é só posta, estarei sempre a sua disposição para melhor lhe ajudar.

    Caso tenha lhe ajudado não se esqueça de marca como útil, só assim ajudará a melhorar a qualidade do fórum.

    Heberton Melo
    MCP | MCTS em SQL Server 2008 | Projetista de Dados

    Blog: http://heberton-melo.spaces.live.com

    terça-feira, 20 de outubro de 2009 14:40