我尝试这样做,但这是一个语法错误,我做错了什么?
declare myid := insert into oameni values(default,'lol') returning id;
我的桌子:
create table oameni
(
id serial primary key,
name varhcar(10)
);
答案 0 :(得分:70)
您需要在RETURNING中使用INTO子句来设置返回到变量中的值:
DECLARE myid OAMENI.id%TYPE;
INSERT INTO oameni
VALUES
(default,'lol')
RETURNING id INTO myid;
您还需要指定变量的数据类型;我很高兴看到postgresql supports %TYPE and %ROWTYPE。
答案 1 :(得分:1)
添加到主要答案,值得注意的是,如果您在存储过程之外执行此操作,则必须将代码包装在“DO”块中,如下所示:
DO $$
DECLARE
myid mytable.id%TYPE;
BEGIN
INSERT INTO mytable (...)
VALUES (...)
RETURNING id INTO myid;
END $$