Fórum update com select #377400
11/05/2010
0
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
Curtir tópico
+ 0Posts
11/05/2010
Wilson Junior
Aguardo.
Gostei + 0
11/05/2010
Daiana Feiten
(
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
Gostei + 0
11/05/2010
Wilson Junior
Se sim, ela possui somente 1 registro?Se não, como você sabe qual senha é de determinado usuário?Aguardo.
Gostei + 0
11/05/2010
Daiana Feiten
é 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?
Gostei + 0
11/05/2010
Wilson Junior
1 2 3 4 | 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.
Gostei + 0
11/05/2010
Daiana Feiten
Gostei + 0
11/05/2010
Wilson Junior
Espero ter colaborado.
Gostei + 0
12/05/2010
Daiana Feiten
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.
Gostei + 0
12/05/2010
Wilson Junior
Qualquer coisa é só perguntar.
Espero ter colaborado.
Gostei + 0
12/05/2010
Daiana Feiten
Gostei + 0
12/05/2010
Wilson Junior
Desculpe não poder lhe ajudar neste caso.
Gostei + 0
12/05/2010
Daiana Feiten
Daiana.
Gostei + 0
12/05/2010
Daiana Feiten
insert into senha (senha,idusuario) values ('58963258',1),('14785236',2)
Dá erro...
Gostei + 0
16/05/2010
Danielle Lemos
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
Gostei + 0
17/05/2010
Daiana Feiten
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)