- Este tópico contém 12 respostas, 5 vozes e foi atualizado pela última vez 16 anos, 6 meses atrás por
Itimura.
-
AutorPosts
-
19 de agosto de 2009 às 6:17 pm #89081
Itimura
ParticipanteOla pessoal, mais uma vez venho solicitar a ajuda de vocês que sempre tem ajudado com enorme atenção
desde jah Obrigado
Seguinte:
Cenario:
Tabela de produtos
A Gerencia resolveu mudar a descrição de todos os produtos da empresa, me repassou os códigos e a descrição correta de como seráSubi essa planilha do excell em uma tabela no banco(depois eu dropo ela) nela consta somente o dódigo do produto e a descrição (tabela PRODUTOS_DESCRICAO)
Agora preciso fazer um update na tabela PRODUTOS sendo a descrição igual a tabela PRODUTOS_DESCRICAO com referencia nos códigos de cada produto..
não sei como posso fazer isso no oracle
ou melhor, da pra fazer isso?
Obrigado
19 de agosto de 2009 às 6:45 pm #89085Regis Araujo
ParticipanteSalve Itimura..
Tenta assim..
UPDATE PRODUTOS PROD SET PROD.DESCRICAO = (SELECT PRODDESC.DESCRICAO FROM PRODUTOS_DESCRICAO PRODDESC
WHERE PRODDESC.CODIGO = PROD.CODIGO)Ve se isto resolve..
Abraços….
19 de agosto de 2009 às 9:23 pm #89098Itimura
ParticipanteOla Thunder! tudo bem?!
Obrigado, eu estava caminhando nesse mesmo pensamento, só reajustei para a sua resposta e foi a mesma
Deu erro ao executar dizendo “ORA-01427: A subconsulta de uma única linha retorna mais de uma linha”
código utilizado:
update pcprodut produto
set produto.descricao =
(select descricao from produtos_descricao_b prodesc
where prodesc.codprod = produto.codprod)19 de agosto de 2009 às 9:50 pm #89102Rodrigo Mesquita
Participantecoloca um distinct antes de descricao
19 de agosto de 2009 às 9:56 pm #89103Itimura
ParticipanteOla Rodrigo
mesmo erro..
update pcprodut produto
set produto.descricao =
(select distinct descricao from produtos_descricao_b prodesc
where prodesc.codprod = produto.codprod)
19 de agosto de 2009 às 10:04 pm #89104Rodrigo Mesquita
ParticipanteNesses casos recomento o uso do comando Merge
MERGE INTO pcprodut P
USING (SELECT descricao
FROM produtos_descricao_b d)
ON (p.codprod = d.codprod)
WHEN NOT MATCHED THEN
UPDATE SET p.descricao = d.descricao19 de agosto de 2009 às 10:24 pm #89105Itimura
Participanteagora ele fala que a palavra chave não foi encontrada
ORA-00905
19 de agosto de 2009 às 11:15 pm #89109Ishii
ParticipanteOlá,
O Merge funciona para versão 9i em diante. Verifique se o parâmetro compatilble está para 9i ou superior.
[]s Ishii
19 de agosto de 2009 às 11:38 pm #89111Itimura
ParticipanteOla Ishii tudo bem?!
então, estou usando o SQL Developer e os controles de versões estão ativos…
realmene é muito dificil de fazer este update?!
20 de agosto de 2009 às 12:46 am #89122Ishii
ParticipanteOlá,
Tente assim:
MERGE INTO pcprodut D
USING (SELECT descricao, codprod FROM produtos_descricao_b) S
ON (D.codprod= S. codprod)
WHEN MATCHED THEN UPDATE SET p.descricao = d.descricao
Se ainda não funcionar, verifique se a sintaxe está correta.
[]s Ishii
20 de agosto de 2009 às 12:48 am #89123Ishii
ParticipanteOps, digitei errado…
MERGE INTO pcprodut D
USING (SELECT descricao, codprod FROM produtos_descricao_b) S
ON (D.codprod= S. codprod)
WHEN MATCHED THEN UPDATE SET d.descricao = s.descricao
[]s Ishii
20 de agosto de 2009 às 12:49 am #89124jp_centec
ParticipanteFaz um cursorzinho e mata essa parada.
Declare
curosr cursor_upd is
select cod, desc from produtos_descricao;
begin
for reg in curosr_upd loop
update produtos
set descricao_produto = reg.desc
where codigo_produto=ref.cod;
end loop;
end;
/
21 de agosto de 2009 às 12:25 am #89175Itimura
ParticipanteObrigado mais uma vez pela atenção de vocêis, foi resolvido com o primeiro update passado, o que estava impedindo de ser realizado era que eu não tinha a mesma quantidade de produtos com a tabela de origem e isso causou retono de erros do oracle
Obrigado !!
De coração
Valew!
[quote=”Thunder_Catz”:12icu52d]Salve Itimura..
Tenta assim..
UPDATE PRODUTOS PROD SET PROD.DESCRICAO = (SELECT PRODDESC.DESCRICAO FROM PRODUTOS_DESCRICAO PRODDESC
WHERE PRODDESC.CODIGO = PROD.CODIGO)Ve se isto resolve..
Abraços….[/quote]
-
AutorPosts
- Você deve fazer login para responder a este tópico.