Insert através de select  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
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
truck1n
Java Ninja
[Avatar]
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
[WWW] [MSN]
mendigosujo
JavaEvangelist

Membro desde: 24/09/2007 08:28:23
Mensagens: 326
Offline

Sim, mas isso funciona em bancos diferentes?

[]'s
nbluis
GUJ Master
[Avatar]

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.
[WWW]
mendigosujo
JavaEvangelist

Membro desde: 24/09/2007 08:28:23
Mensagens: 326
Offline

Opa

Deu certo

Valeu amigo

[]'s
thais_lopes
Entusiasta Java
[Avatar]

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

}


[MSN]
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
[Email] [WWW] [Yahoo!] [MSN]
Pedro Felipe
Smalltalk
[Avatar]

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...
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?
Pedro Felipe
Smalltalk
[Avatar]

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;

 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team