Exemplo de INSERT...RETURNING

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Avatar do usuário
tfg
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 83
Registrado em: Seg, 03 Mai 2004 3:38 pm
Localização: Novo Hamburgo - RS

Alguém aí tem um exemplo de INSERT RETURNING???
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Sim! Veja esse exemplo:

Selecionar tudo

set feedback off
set serveroutput on

-------------------------------------------------------------
--Criamos uma tabela que tera a chave auto-incrementada.
-------------------------------------------------------------
create table auto_increment (
  id                number not null constraint pk_ai primary key,
  something         number
); 

-------------------------------------------------------------
--Criamos uma sequence que vai alimentar a chave.
-------------------------------------------------------------
create sequence seq_auto_increment start with 1 increment by 1;

-------------------------------------------------------------
--Criamos a trigger que vai colocar a seq na chave.
-------------------------------------------------------------
create or replace trigger ai 
  before insert on auto_increment
  for each row
  begin
    if :new.id is null then
      select seq_auto_increment.nextval into :new.id from dual;
    end if;
  end;
/



declare
  i number;
begin

  -------------------------------------------------------------
  --aqui vai a manha... Ele retorna o código gerado da sequence!!!
  -------------------------------------------------------------
  insert into auto_increment (something) values (9) returning id into i;
  dbms_output.put_line('id was: '||i);

  insert into auto_increment (something) values (8) returning id into i;
  dbms_output.put_line('id was: '||i);

  insert into auto_increment (something) values (4) returning id into i;
  dbms_output.put_line('id was: '||i);

  insert into auto_increment (something) values (5) returning id into i;
  dbms_output.put_line('id was: '||i);
end;
/

--drop table auto_increment;
--drop sequence seq_auto_increment;
Responder
  • Informação