Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Foto:

Comando UPDATE de Oracle para SQL Server

  • Por favor, faça o login para responder
5 respostas neste tópico

#1 FábioWP

FábioWP
  • Membros
  • 9 posts

Postado 26 novembro 2007 - 12:43

Pessoal, estou tendo dificuldes com um comando UPDATE, pois eu uso ele em um banco Oracle e funciona corretamente, mas agora estou precisando executar o mesmo comando em uma Base SQL Server. O problema é que está dando erro e eu não conheço muito de SQL Server.

O comando é este :

update r069cra a set usu_filial = (select SUBSTR(NUMCRA,2,2) from r069cra
b where a.numcra = b.numcra);

E o erro é este: incorrect syntax near 'a'

Por favor, se alguém puder me ajudar a converter este código SQL de forma que ele possa ser executado no SQL Server, ficarei muito grato.
  • 0

#2 A.Jr

A.Jr

    DBA sim senhor ¬¬

  • Membros
  • 3.033 posts

Postado 26 novembro 2007 - 13:33

Deixa eu ver se entendi.
é um update para a msm tabela mas em campos diferentes?!
abs
  • 0

#3 eriva_br

eriva_br
  • Moderadores
  • 2.196 posts

Postado 26 novembro 2007 - 13:36

o UPDATE é um pouco diferente, requer o FROM e o apelido da tabela vai no FROM, e o comando SUBSTR é SUBSTRING

creio que vai ficar +ou- assim, testai, faça backup, ou transação antes pra garantir...
UPDATE r069cra SET usu_filial = (SELECT SUBSTRING(NUMCRA,2,2) FROM r069cra b
                                WHERE a.numcra = b.numcra)
FROM r069cra a

veja tb. o books online: http://msdn2.microso...42(SQL.80).aspx



t+
:natal_biggrin:


Deixa eu ver se entendi.
é um update para a msm tabela mas em campos diferentes?!
abs

podes cre véio, não tinha reparado, nesse caso é só fazer:
UPDATE r069cra SET usu_filial = SUBSTRING(NUMCRA,2,2)

lembre-se: backup antes

fiz o seguinte teste e funcionou:
USE pubs
SELECT * FROM titles  --antes
UPDATE titles SET price = price - 1000
SELECT * FROM titles  --depois
UPDATE titles SET price = price + 1000
SELECT * FROM titles  --voltado


t++
:natal_smile:
  • 0

#4 A.Jr

A.Jr

    DBA sim senhor ¬¬

  • Membros
  • 3.033 posts

Postado 26 novembro 2007 - 13:42

Fabio,
Realmente, se for a msm tabela, é soh fazer como nosso amigo eriva disse:

UPDATE r069cra SET usu_filial = SUBSTRING(NUMCRA,2,2)

^^

abs
  • 0

#5 FábioWP

FábioWP
  • Membros
  • 9 posts

Postado 26 novembro 2007 - 13:58

Valeu pela ajuda! realmente foi muito válida, resolveu meu problema, mas agora apareceu outro, pois em oracle não tenho problemas com aqele comando usado em um campo inteiro passando para String. Mas com o SQL ele apresentou erro de tipo de dados invalido, pois neste trecho do comando: (SELECT SUBSTRING(NUMCRA,2,2) o NUNCRA é um campo do tipo inteiro.

Se você puder me ajudar novamente, ficarei muito feliz, pois estará dando um grande empurrão aqui.

Mas de qualquer forma, já me ajudou muito me mostrando como fazer o comando corretamente no SQL Server... Valeu Mesmo!!!



o UPDATE é um pouco diferente, requer o FROM e o apelido da tabela vai no FROM, e o comando SUBSTR é SUBSTRING

creio que vai ficar +ou- assim, testai, faça backup, ou transação antes pra garantir...

UPDATE r069cra SET usu_filial = (SELECT SUBSTRING(NUMCRA,2,2) FROM r069cra b
                                WHERE a.numcra = b.numcra)
FROM r069cra a

veja tb. o books online: http://msdn2.microso...42(SQL.80).aspx



t+
:natal_biggrin:


Deixa eu ver se entendi.
é um update para a msm tabela mas em campos diferentes?!
abs

podes cre véio, não tinha reparado, nesse caso é só fazer:
UPDATE r069cra SET usu_filial = SUBSTRING(NUMCRA,2,2)

lembre-se: backup antes

fiz o seguinte teste e funcionou:
USE pubs
SELECT * FROM titles  --antes
UPDATE titles SET price = price - 1000
SELECT * FROM titles  --depois
UPDATE titles SET price = price + 1000
SELECT * FROM titles  --voltado


t++
:natal_smile:


  • 0

#6 eriva_br

eriva_br
  • Moderadores
  • 2.196 posts

Postado 26 novembro 2007 - 14:01

Valeu pela ajuda! realmente foi muito válida, resolveu meu problema, mas agora apareceu outro, pois em oracle não tenho problemas com aqele comando usado em um campo inteiro passando para String. Mas com o SQL ele apresentou erro de tipo de dados invalido, pois neste trecho do comando: (SELECT SUBSTRING(NUMCRA,2,2) o NUNCRA é um campo do tipo inteiro.

Se você puder me ajudar novamente, ficarei muito feliz, pois estará dando um grande empurrão aqui.

Mas de qualquer forma, já me ajudou muito me mostrando como fazer o comando corretamente no SQL Server... Valeu Mesmo!!!

nesse caso tem que converter o campo para char, utilize o comando CAST ou CONVERT


t+
:natal_wink:
  • 0




Publicidade

/ins>