Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用RETURNING子句进行变量值赋值_Sql_Postgresql_Sql Returning - Fatal编程技术网

Sql 使用RETURNING子句进行变量值赋值

Sql 使用RETURNING子句进行变量值赋值,sql,postgresql,sql-returning,Sql,Postgresql,Sql Returning,我试图这样做,但这是一个语法错误,我做错了什么 declare myid := insert into oameni values(default,'lol') returning id; 我的桌子: create table oameni ( id serial primary key, name varchar(10) ); 您需要在RETURNING中使用INTO子句来设置要返回到变量中的值: DECLARE myid OAMENI.id%TYPE; INSERT INTO

我试图这样做,但这是一个语法错误,我做错了什么

declare myid := insert into oameni values(default,'lol') returning id;
我的桌子:

create table oameni
(
 id   serial primary key,
 name varchar(10)
);

您需要在RETURNING中使用INTO子句来设置要返回到变量中的值:

DECLARE myid OAMENI.id%TYPE;

INSERT INTO oameni 
VALUES 
  (default,'lol') 
RETURNING id INTO myid;

您还需要指定变量的数据类型;我很高兴看到。

除了主要答案之外,值得注意的是,如果在存储过程之外执行此操作,则必须将代码包装在“DO”块中,如下所示:

DO $$ 
DECLARE
    myid mytable.id%TYPE;
BEGIN
    INSERT INTO mytable (...) 
      VALUES (...)
      RETURNING id INTO myid;
END $$

我仍然得到一个语法错误,这是仅在plpgsql函数中可用,还是在普通的posgresql中也可用?@Omu:您试图如何运行它?什么版本的PostgreSQL?我有最新版本9 RC1,我刚刚把你的代码粘贴到sql编辑器中。你把程序代码和sql混淆了。声明变量、游标、循环等都是过程性的,必须在函数或9.0中的DO匿名块中使用。@Scott Bailey:这是我所能看到的唯一在函数/存储过程中使用的用法。