| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 09:29:05
|
mendigosujo
JavaEvangelist
Membro desde: 24/09/2007 08:28:23
Mensagens: 326
Offline
|
Opa
Faço um select em um banco linkado que eu tenho e gostaria de inserir os valores do select em um insert de outro banco:
É possível fazer isso?
[]'s
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 09:33:52
|
truck1n
Java Ninja
Membro desde: 26/04/2006 11:41:05
Mensagens: 296
Localização: São Paulo
Offline
|
é isso que você precisa?
Flw!
This message was edited 1 time. Last update was at 18/12/2007 09:34:36
|
Get Rich Or Die Trying |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 09:34:55
|
mendigosujo
JavaEvangelist
Membro desde: 24/09/2007 08:28:23
Mensagens: 326
Offline
|
Sim, mas isso funciona em bancos diferentes?
[]'s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 09:36:53
|
nbluis
GUJ Master
![[Avatar]](/images/avatar/f0682320ccbbb1f1fb1e795de5e5639a.jpg)
Membro desde: 27/05/2006 01:31:51
Mensagens: 1531
Localização: Porto Alegre - RS
Offline
|
É ANSI, qualquer banco que siga esse padrão funciona.
|
Luis Eduardo Bohrer
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 09:37:46
|
mendigosujo
JavaEvangelist
Membro desde: 24/09/2007 08:28:23
Mensagens: 326
Offline
|
Opa
Deu certo
Valeu amigo
[]'s
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/12/2007 09:37:54
|
thais_lopes
Entusiasta Java
![[Avatar]](/images/avatar/f7c5213a8ce1cfc32b697f9e70e1b3b7.jpg)
Membro desde: 17/12/2007 20:37:39
Mensagens: 20
Offline
|
Oii ...
Tenta executar o select e jogar tudo que ele retornar para um resultset ... depois faz um while para percorrer todos os valores armazenados dentro desse resultset ... e enfim .. faz o insert em outra tabela !!
mais ou menos assim :
//adiciona uma query
// armazena os resultados dentro do resultset
ResultSet rset = pstmt.executeQuery();
// percorre o resultset
while(rset.next())
{
// insere os dados na outra tabela
}
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/05/2010 22:01:01
|
evertonrubens
What is classpath?
Membro desde: 11/09/2006 15:12:29
Mensagens: 8
Localização: Osasco - SP
Offline
|
nbluis wrote:É ANSI, qualquer banco que siga esse padrão funciona.
esculpe amigo, mas tenho que dizer que este script não irá funcionar no DB2 iSeries (AS400). Poderá ser executado em todos, menos neste
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/10/2010 08:14:27
|
Pedro Felipe
Smalltalk
![[Avatar]](/images/avatar/146e6ff879d04651b5a36fbc7347763b.png)
Membro desde: 29/10/2010 07:56:25
Mensagens: 2
Offline
|
só mais uma maneira, eu, usando um banco oracle, faço isso assim:
claro, estou usando PL/SQL e portanto a logica acima so funciona em oracle. mas acredito que qualquer banco deve ter as funcoes de loop q sejam parecidas com o que fiz acima... mas, o INSERT INTO TABLE1 (A, B, C) VALUES (SELECT A, B, C FROM TABLE2); deve funcionar... so nao tenho certeza se deve-se usar o "values" ou não...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/10/2010 08:45:46
|
pmlm
GUJ Master
Membro desde: 20/04/2009 12:20:07
Mensagens: 1199
Localização: Portugal
Offline
|
thais_lopes wrote:
Tenta executar o select e jogar tudo que ele retornar para um resultset ... depois faz um while para percorrer todos os valores armazenados dentro desse resultset ... e enfim .. faz o insert em outra tabela !!
Pedro Felipe wrote:só mais uma maneira, eu, usando um banco oracle, faço isso assim:
Por que fazer com muitas instruções (1 SELECT + N INSERT) quando se pode fazer apenas com uma única?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/10/2010 09:57:49
|
Pedro Felipe
Smalltalk
![[Avatar]](/images/avatar/146e6ff879d04651b5a36fbc7347763b.png)
Membro desde: 29/10/2010 07:56:25
Mensagens: 2
Offline
|
é q eu dei um exemplo muito simples, e nesse caso, realmente não precisava... vc pode usar uma instrução SQL padrão só:
INSERT
INTO estagiarios
(
MATRICULA,
NOME,
ENDERECO,
SALARIO
)
SELECT MATRICULA,
NOME,
ENDERECO,
SALARIO
FROM funcionarios
WHERE salario < 500
;
agora, quando as coisas começam a complicar, usar PL/SQL facilita a vida. digamos q a matricula dos estagiarios nao pudesse ser o mesmo numero de quando eles estavam na tabela de funcionarios, pois poderia esse numero ja estar em uso, e ele seja chave primaria. digamos q antes de inserir na tabela estagiarios eu quisesse descobrir uma matricula valida, então isso ajudaria:
DECLARE
V_MAT NUMBER(5, 0);
BEGIN
FOR V_FUNC IN
(SELECT * FROM funcionarios WHERE salario < 500) -- aqui vc usa o select que quiser
LOOP
-- primeiro faço uma lógica qualquer (exemplo, poderia ser algo mais complicado, aqui poderiamos ter varios "select into")
SELECT MAX(MATRICULA) + 1
INTO V_MAT
FROM estagiarios;
-- depois faço o insert, usando V_MAT
INSERT
INTO estagiarios
(
MATRICULA,
NOME,
ENDERECO,
SALARIO
)
VALUES
(
V_MAT,
V_FUNC.NOME,
V_FUNC.ENDERECO,
V_FUNC.SALARIO
)
;
END LOOP;
END;
|
|
|
 |
|
|