Re: [SQL] SQL stored function inserting and returning data in a row.
От | Hocine Abir |
---|---|
Тема | Re: [SQL] SQL stored function inserting and returning data in a row. |
Дата | |
Msg-id | 20080111120645.ev3hse9w9lskogwo@mail.iutv.univ-paris13.fr обсуждение исходный текст |
Список | pgsql-admin |
Selon Daniel Caune <daniel.caune@ubisoft.com>: > Hi, > > Is there any way to define a SQL stored function that inserts a row in a > table and returns the serial generated? > > CREATE TABLE matchmaking_session > ( > session_id bigint NOT NULL DEFAULT > nextval('seq_matchmaking_session_id'), > ... > ); > > CREATE FUNCTION create_matchmaking_sesssion(...) > RETURNS bigint > AS $$ > INSERT INTO matchmaking_session(...) > VALUES (...) > RETURNING session_id; > $$ LANGUAGE SQL; > > 2008-01-10 22:08:48 EST ERROR: return type mismatch in function > declared to return bigint > 2008-01-10 22:08:48 EST DETAIL: Function's final statement must be a > SELECT. > 2008-01-10 22:08:48 EST CONTEXT: SQL function > "create_matchmaking_sesssion" > > I can easily convert this code into a PL/pgSQL function, but I'm > thinking that pure SQL is more natural (and faster?) for such a stored > function. > > Regards, > > -- > Daniel > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Have you searched our list archives? > > http://archives.postgresql.org > Just add a SELECT query like this : CREATE FUNCTION create_matchmaking_session() RETURNS bigint AS $$ INSERT INTO matchmaking_session VALUES (nextval('seq_matchmaking_session_id')); SELECT currval('seq_matchmaking_session_id') as session_id; $$ LANGUAGE SQL; -- Hocine Abir IUT de Villetaneuse
В списке pgsql-admin по дате отправления: