Oracle insert into returning

2019-07-20 12:30发布

I'm trying return id after insert:

CREATE SEQUENCE seq_osobne_udaje
INCREMENT BY 1 START WITH 1;

CREATE OR REPLACE TRIGGER trig_osobne_udaje_seq
BEFORE INSERT ON osobne_udaje
FOR EACH ROW
BEGIN
  SELECT seq_osobne_udaje.nextval INTO :new.id FROM dual;
END;
/

and then:

var tmp number;

insert into osobne_udaje(name,sur,born,is_man) 
values('Jacob','Wulp',to_date('28.07.1992','DD.MM.YYYY'),'Y') 
returning id into tmp;

but it write exception in insert row: SQL Error: ORA-00905: missing keyword

标签: oracle insert
1条回答
放荡不羁爱自由
2楼-- · 2019-07-20 12:38

This script works in SQL Developer:

DROP TRIGGER trig_osobne_udaje_seq;
DROP SEQUENCE seq_osobne_udaje;
DROP table osobne_udaje;

create table osobne_udaje(
  id NUMBER,
  name VARCHAR2(20),
  sur  VARCHAR2(20),
  born DATE,
  is_man CHAR(1)
)
/

CREATE SEQUENCE seq_osobne_udaje
INCREMENT BY 1 START WITH 1;
/

CREATE OR REPLACE TRIGGER trig_osobne_udaje_seq
BEFORE INSERT ON osobne_udaje
FOR EACH ROW
BEGIN
  :new.id := seq_osobne_udaje.nextval;
END;
/

var tmp number;
/

BEGIN
  insert into osobne_udaje(name,sur,born,is_man) 
  values('Jacob','Wulp',to_date('28.07.1992','DD.MM.YYYY'),'Y')
  returning id into :tmp;
END;
/

print tmp;
查看更多
登录 后发表回答