update com select
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!!
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
Curtidas 0
Respostas
Wilson Junior
11/05/2010
Nos passe a estrutura das suas tabelas, para poder lhe ajudar corretamente.
Aguardo.
Aguardo.
GOSTEI 0

Daiana Feiten
11/05/2010
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
(
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
Wilson Junior
11/05/2010
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.
Se sim, ela possui somente 1 registro?Se não, como você sabe qual senha é de determinado usuário?Aguardo.
GOSTEI 0

Daiana Feiten
11/05/2010
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?
é 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
Wilson Junior
11/05/2010
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

Daiana Feiten
11/05/2010
Vou ter q fazer um insert na tabela senha com o campo idusuario da tabela usuario... isso resolve né?
GOSTEI 0
Wilson Junior
11/05/2010
Com certeza resolve.
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0

Daiana Feiten
11/05/2010
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.
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
Wilson Junior
11/05/2010
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.
Qualquer coisa é só perguntar.
Espero ter colaborado.
GOSTEI 0

Daiana Feiten
11/05/2010
só q esse exemplo é usando o delphi e eu uso só oracle... como poderia conectar esse xls com o oracle...?
GOSTEI 0
Wilson Junior
11/05/2010
Diretamente no Oracle eu não sei te dizer como fazer.
Desculpe não poder lhe ajudar neste caso.
Desculpe não poder lhe ajudar neste caso.
GOSTEI 0

Daiana Feiten
11/05/2010
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.
Daiana.
GOSTEI 0

Daiana Feiten
11/05/2010
Essa instrução abaixo... não é possivel?
insert into senha (senha,idusuario) values ('58963258',1),('14785236',2)
Dá erro...
insert into senha (senha,idusuario) values ('58963258',1),('14785236',2)
Dá erro...
GOSTEI 0

Danielle Lemos
11/05/2010
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
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

Daiana Feiten
11/05/2010
Muito obrigada!!
GOSTEI 0
Wilson Junior
11/05/2010
Olá Daiane,
Me desculpe não ter lhe ajudado antes, pois estive doente, mas qualquer coisa é só perguntar que tentamos lhe ajudar.
Me desculpe não ter lhe ajudado antes, pois estive doente, mas qualquer coisa é só perguntar que tentamos lhe ajudar.
GOSTEI 0

Daiana Feiten
11/05/2010
Obrigada a todos!!
GOSTEI 0