Ir para o conteúdo
Ricardo Goncalves

Erro ao executar query com "Merge"

Mensagens Recomendadas

Ricardo Goncalves    1
Ricardo Goncalves

Boas,

cada vez que executo esta query através deste código retorna o erro "Incorrect Syntax near s" ou seja na primeira quebra de linha da query, alguem me sabe dizer o que estou a fazer mal?

Dim sqlCmd As SqlCommand
Dim Con As SqlConnection = New SqlConnection("Data Source=127.0.0.1;Initial Catalog=master;User ID=sa;Password=password")

Try
Con.Open()

sqlCmd = New SqlCommand(String.Format("merge datbase1.dbo.PriceLine as T using database2.dbo.PriceLine as S" +
"on s.PriceLineID = t.PriceLineID" +
"when matched and t.hralt <> s.hralt then" +
"Update" +
"set t.PriceLineID = s.PriceLineID" +
",t.PriceLineKey=s.PriceLineKey" +
",t.LanguageID=s.LanguageID" +
",t.ShortDescription=s.ShortDescription" +
",t.Description=s.Description" +
",t.WorkstationID=s.WorkstationID" +
",t.SessionID=s.SessionID" +
",t.UserAlt=s.UserAlt" +
",t.DtAlt=s.DtAlt" +
",t.HrAlt=s.HrAlt" +
",t.UID=s.UID" +
",t.ChangeSetID=s.ChangeSetID" +
"when not matched by target then" +
"insert (PriceLineID" +
",PriceLineKey" +
",LanguageID" +
",ShortDescription" +
",Description" +
",WorkstationID" +
",SessionID" +
",UserAlt" +
",DtAlt" +
",HrAlt" +
",UID" +
",ChangeSetID)" +
"values (s.PriceLineID" +
",s.PriceLineKey" +
",s.LanguageID" +
",s.ShortDescription" +
",s.Description" +
",s.WorkstationID" +
",s.SessionID" +
",s.UserAlt" +
",s.DtAlt" +
",s.HrAlt" +
",s.UID" +
",s.ChangeSetID;", Con))
sqlCmd.Connection = Con
sqlCmd.ExecuteNonQuery()
sqlCmd.Dispose()
Con.Close()

Catch ex As System.Exception
MsgBox(ex.Message)
End Try

Desde já o meu obrigado a quem responder.

Editado por Ricardo Goncalves

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
FDomingos    9
FDomingos

Uma das coisas que reparei foi o facto de não estares a dar espaços entre as várias instruções. Por exemplo, nesta instrução:

"when matched and t.hralt <> s.hralt then" +
"Update" +

O que estás a enviar para a base de dados é "when matched and t.hralt <> s.hralt thenUpdate", dá um espaço entre o then e as ".

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.