Oracle 甲骨文插入返回

Oracle 甲骨文插入返回,oracle,insert,Oracle,Insert,我正在尝试在插入后返回id: 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; / 然后: var t

我正在尝试在插入后返回id:

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;
/
然后:

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;

但它在insert row中写入异常:SQL错误:ORA-00905:缺少关键字

此脚本在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;

错误堆栈中显示了什么行号?那个行号里有什么?另外,代码是什么?returning子句是否应该是
将ID返回到&tmp
?带有错误的行号是line,带有:returning ID INTO tmp;tmp是一个
SQL*Plus
变量吗?在你的问题中,我看不到你提到过的任何地方。是的,它是SQL*加变量。我删除所有触发器和序列,复制你的代码,它就工作了。谢谢男人:)