87 votes

Affectation de la valeur d'une variable à l'aide de la clause RETURNING

J'essaie de le faire, mais il y a une erreur de syntaxe, qu'est-ce que je fais mal ?

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

ma table :

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

152voto

OMG Ponies Points 144785

Vous devez utiliser la clause INTO dans le RETURNING pour définir la valeur retournée dans votre variable :

DECLARE myid OAMENI.id%TYPE;

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

Vous devez également spécifier le type de données de votre variable ; je suis heureux de voir que postgresql supporte %TYPE et %ROWTYPE .

15voto

Qwertie Points 5311

En complément de la réponse principale, il convient de noter que si vous effectuez cette opération en dehors d'une procédure stockée, vous devez envelopper le code dans un bloc "DO", comme suit :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X