Usuário com melhor resposta
Inserção no Oracle com Sequence

Pergunta
-
Respostas
-
Amigos,Consegui resolver o problema.Utilizei 3 variáveis e um For Loop ContainerUma das variáveis define o número de registros a serem inseridos (Select Count na tabela de origem), fora do LoopDentro do loop faço um select no oracle pra trazer a o numero de incremento a ser inserido( Select nomesequence.nexval)Ainda no Loop insiro linha a linha até que o numero de registros da primeira variavel , e a cada interação do loop pega uma sequencenova no oracleSendo assim consigo inserir no oracle utlizando a sequence criada no mesmo.Obrigao Junior, espero que eu tenha sido claro no procedimento que adotei.Abraços.Valério
- Marcado como Resposta Valério Pereira sábado, 10 de outubro de 2009 15:14
Todas as Respostas
-
-
Prezado Junior blz amigo,Seguinte no OleDB Source tem uma tabela conectada ao SQL Server e no OLEDB Destination vou ter uma tabela do Oracle o qual um dos campos utiliza uma sequence pra ser inserido, ou seja se eu fosse fazer o insert eu teria que passar o nome da sequence.nextval, como pegar o proximo seqüencial da tabela com nextval via OLEDB destinationAtt,Valério
-
-
-
Exatamente,Preciso carregar uma tabela de Origem SQL Server (OLE DB Source) para a tabela de destino Oracle(OLEDB Destination) e utilizar a autonumeração da coluna da tabela do oracle que é feita via sequence.Desde já agredeço.Att,Valério
-
Valério,
Então o que você poderia fazer é configurar o seu pacote SSIS, mas omitir no componente OLEDB Destination a coluna que esta sendo utilizada para autonumeração, com isso quando o dado for inserido o Oracle faz a autonumeração.
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA -
Fala Juniro blz,Seguinte o procedimento que você descreveu não ocorre pois o oracle não possui autoincremento como ocorre com o identiy no SQL Server.Para isso vc deve chamar a sequence e dar o comando nextval, como não vou usar o comando insert não sei como chamar esse comando para cada linha inserida através do OLEDB DestinationAtt,Valério
-
Amigos,Consegui resolver o problema.Utilizei 3 variáveis e um For Loop ContainerUma das variáveis define o número de registros a serem inseridos (Select Count na tabela de origem), fora do LoopDentro do loop faço um select no oracle pra trazer a o numero de incremento a ser inserido( Select nomesequence.nexval)Ainda no Loop insiro linha a linha até que o numero de registros da primeira variavel , e a cada interação do loop pega uma sequencenova no oracleSendo assim consigo inserir no oracle utlizando a sequence criada no mesmo.Obrigao Junior, espero que eu tenha sido claro no procedimento que adotei.Abraços.Valério
- Marcado como Resposta Valério Pereira sábado, 10 de outubro de 2009 15:14
-
-
Valério apenas para registro, já passei por uma situação parecida e resolvi ela criando uma trigger de insert no oracle.
Abaixo ex. trigger de inserção:
create trigger auto_trigger
before insert on teste
for each row
begin
select test_seq.nextval into :new.id from dual;
end;
Att. Leandro Hexsel Bugalho -