Gravação de registros em colunas de tabela de forma dinâmica

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
rhoads88
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Sáb, 21 Abr 2012 1:49 pm

Boa noite!

Estou com uma dúvida a respeito da gravação de registros no banco do oracle. Estou usando o oracle 6.

Quero fazer uma gravação do registro informando dinamicamente o número da coluna na tabela. Ou seja, ao invés de fazer:

insert into tabela (coluna1)


eu quero inserir este valor na tabela de acordo com o column_id desta tabela.

Acredito que internamente o banco de dados interpreta esse script sql e envia a informação para um endereço de memória aonde está armazenada a coluna da tabela.


A ideia seria metaforicamente:

SELECT ENDEREÇO_COLUNA('COLUNA_TESTE')
FROM TABELA
INTO VAR;

INSERT INTO TABELA(VAR) VALUES '1';

Ou seja, quero gravar no campo VAR da TABELA, mas esse campo não é sempre o mesmo.



EX 2 - prático:

Tenho 200 colunas em uma tabela, ex: pk,op_1,op_2,op_3,op_4,op_5....
Fazer uma gravação de dados de um arquivo texto com 200 linhas.
Cada linha que leio grava na proxima coluna no mesmo registro.


Espero ter conseguido me expressar. Deve haver uma maneira de fazer isso, até no Dataflex tem.. hehehehe

Abraço,
Marcelo
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Olá,

Da forma que você exemplifica seu objetivo, é inviável.

Porém se você tem o nome da coluna em uma string, poderia trabalhar com execute imediate.

Selecionar tudo

Execute Immediate 'Insert Into tabela('||coluna_teste||') Values ('||valores_inclusao||');';
talvez lhe atenda melhor
rhoads88
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 9
Registrado em: Sáb, 21 Abr 2012 1:49 pm

Bom dia, creio que esse Execute imediate é o que preciso, vou testar.

Valeu
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 2 visitantes