update com select

11/05/2010

0

Olá!!
Estou tentando fazer um update na tabela usuarios no campo senha, fazendo select da senha que esta na tabela senha... como devo fazer...

update usuario_senha set senha=(select senha from senha) where idusuario in (199,299,399,499)

Obrigada!!

Daiana Feiten

Daiana Feiten

Responder

Posts

11/05/2010

Wilson Junior

Nos passe a estrutura das suas tabelas, para poder lhe ajudar corretamente.

Aguardo.
Responder

11/05/2010

Daiana Feiten

CREATE TABLE USUARIO_SENHA
(
  IDUSUARIO         NUMBER(10)                  NOT NULL,
  DATAINATIVACAO    DATE,
  LOGIN             VARCHAR2(80 BYTE)           NOT NULL,
  NOME              VARCHAR2(80 BYTE)           NOT NULL,
  SENHA             VARCHAR2(80 BYTE)           NOT NULL,
  DATAATUALIZACAO   DATE                        NOT NULL,
  IDPERFIL          NUMBER(10)                  NOT NULL,
  STATUSREPLICACAO  VARCHAR2(1 BYTE),
  ORIGEMSINCRO      VARCHAR2(2 BYTE)
)

CREATE TABLE CWIPDVP1.SENHA
(
  SENHA  VARCHAR2(8 BYTE)                       NOT NULL
)



Preciso pegar usuario por usuario e atualizar o campo senha da tabela usuario, pegando senha da tabela de senha, indiferente de qual senha for para o usuario.

Daiana
Responder

11/05/2010

Wilson Junior

Mas a sua tabela CWIPDVP1.SENHA possui somente este campo?
Se sim, ela possui somente 1 registro?Se não, como você sabe qual senha é de determinado usuário?Aguardo.
Responder

11/05/2010

Daiana Feiten

exatamente só esse campo, pois é indiferente qual senha fica pra qual usuario...

é q gerei as senhas em um programa automatico, depois inseri todas as senhas nessa tabela, para poder buscar as senhas e atualizar na tabela de usuario.

Ok?
Responder

11/05/2010

Wilson Junior

UPDATE USUARIO_SENHA usu
SET usu.Senha = (SELECT sen.Senha FROM SENHA sen)
WHERE
  usu.IDUsuario IN (199,299,399,499)


Executando o SQL acima, não vai funcionar, pois o seu SubSelect vai retornar mais de um registro, você precisa precisa de algum campo na sua tabela SENHA para poder igualar a algum campo da tabela USUARIO_SENHA para retornar apenas uma "senha".

Exemplo:
SENHA
123
321
456


O update não sabe qual destas senhas atribuir para o registro de ID "199, 299,...".

Espero que tenha me compreendido.

Qualquer coisa é só perguntar.
Responder

11/05/2010

Daiana Feiten

Vou ter q fazer um insert na tabela senha com o campo idusuario da tabela usuario... isso resolve né?

Responder

11/05/2010

Wilson Junior

Com certeza resolve.

Espero ter colaborado.
Responder

12/05/2010

Daiana Feiten

Oi!
Tenho outra duvida relacionada ao mesmo problema...

Como tenho os dados dos usuarios numa planilha excel... (até poderia colocá-los num txt), gostaria de fazer um select nesse arquivo e insert na tabela usuario... como poderia fazer esse select?

Obrigada,
Daiana.
Responder

12/05/2010

Wilson Junior

De uma olhada neste link http://www.linhadecodigo.com.br/artigo/773/delphi-utilizando-xls-como-quotbanco-de-dadosquot.aspx

Qualquer coisa é só perguntar.
Espero ter colaborado.
Responder

12/05/2010

Daiana Feiten

só q esse exemplo é usando o delphi e eu uso só oracle... como poderia conectar esse xls com o oracle...?

Responder

12/05/2010

Wilson Junior

Diretamente no Oracle eu não sei te dizer como fazer.
Desculpe não poder lhe ajudar neste caso.
Responder

12/05/2010

Daiana Feiten

Na verdade queria importar o arquivo pelo Toad ou outra ferramenta, vou transformar o xls num txt... estou procurando no google, mas não encontrei nada ainda q me ajude.

Daiana.
Responder

12/05/2010

Daiana Feiten

Essa instrução abaixo... não é possivel?

insert into senha (senha,idusuario) values ('58963258',1),('14785236',2)

Dá erro...

Responder

16/05/2010

Danielle Lemos

Daiana,

No oracle, é preciso repetir o comando de insert para cada linha.
Ex: insert into senha (senha,idusuario) values ('58963258',1);
insert into senha (senha,idusuario) values ('14785236',2);


Há um recurso no Oracle chamado 'External Table'. Com ele, vc pode ler um arquivo texto sem carregá-lo no banco. Segue o exemplo:

Ler o arquivo 'temp.txt' que está no diretório '/var'.
---arquivo 'temp.txt' no diretorio '/var'
aaa,1
bbb,2
ccc,3

No sqlplus:
create directory temp as '/var/';

create table ext_tab (nome varchar2(10), id number(3))
organization external (
type oracle_loader default directory temp
access parameters (
records delimited by '\n'
badfile 'temp.bad'
logfile 'temp.log'
fields terminated by ','
missing field values are null
(nome char, id integer external))
location ('temp.txt'))
reject limit unlimited;


SQL> select * from ext_tab;

NOME               ID
---------- ----------
aaa                 1
bbb                 2
ccc                 3

No momento do select, o arquivo é lido no sistema operacional.

[]´s

Dani
Responder

17/05/2010

Daiana Feiten

Muito obrigada!!
Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar