Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rickparreiras

Criação de multiplos registros a partir de um registro

Recommended Posts

Pessoal,

 

Preciso manusear alguns dados criando outros registros em ORACLE mas estou com dificuldades então solicito ajuda de vocês.

Seguinte:

 

Possuo uma tabela coma seguinte estrutura e dados:

 

CODIGO ANO MES VERBA REF VALOR

9845 2010 01 0123|0325|0643|0327 1320|1423|99|243 20.40|198.30|0.00|2234.21

8321 2009 12 0398|0423|0542|0984|0003 4321|653|1254|125|0 199.20|32.00|183.12|19842.13|2.00

 

 

Cada referencia das colunas VERBA, REF e VALOR são correspondentes e estão separadas por "|".

Preciso a partir desse registro criar vários, tantos forem as referencias que temos nas colunas citadas.

 

As chaves primárias são: CÓDIGO, ANO, MES.

 

Preciso da tabela contendo apenas uma referencia nas colunas VERBA, REF e VALOR conforme abaixo:

 

CODIGO ANO MES VERBA REF VALOR

9845 2010 01 0123 1320 20.40

9845 2010 01 0325 1423 198.30

9845 2010 01 0643 99 0.00

9845 2010 01 0327 243 2234.21

8321 2009 12 0398 4321 199.20

8321 2009 12 0423 653 32.00

8321 2009 12 0542 1254 183.12

8321 2009 12 0984 125 19842.13

8321 2009 12 0003 0 2.00

 

 

Alguem pode me dar uma idéia de como proceder?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A solução seria pegar a string e separá-la nos campos em si.

 

O uso das function substr e instr ajudam.

 

Segue pequeno exemplo.

 

DECLARE
  vs_string VARCHAR2(100);
  vs_codigo varCHAR2(40);
  vn_valor  NUMBER;
BEGIN
  vs_string := '12345|123.34';
  --
  vs_codigo := SubStr(vs_string,1,InStr(vs_string,'|')-1);
  Dbms_Output.put_line(vs_codigo);
  vs_string := SubStr(vs_string,InStr(vs_string,'|')+1,Length(vs_string));
  Dbms_Output.put_line(vs_string); 
  vn_valor :=  SubStr(vs_string,1,Length(vs_string));
  Dbms_Output.put_line(vn_valor);  
END;

Com os valores separados basta fazer o insert.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.