Как я могу присвоить значение, возвращаемое из запроса на вставку переменной в PL / pgSQL - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь создать функцию в Postgres, которая делает простую вставку, и я хочу идентификатор вставки для дальнейшего использования. Но мне говорят: «Ошибка Synatx рядом (» в строке question_key := INSERT INTO QUESTIONS(question, status, questionword) values (in_question, 'unanswered', in_questionword) RETURNING q_key; Это правильный способ назначить?

CREATE OR REPLACE FUNCTION insert_new_record_hackathon(
    in_keywords character varying[],
    in_question text,
    in_questionword character varying)
  RETURNS void AS
$BODY$
DECLARE
i integer;
question_key integer;
keyword_key integer;
BEGIN
question_key := INSERT INTO QUESTIONS(question, status, questionword) values (in_question, 'unanswered', in_questionword) RETURNING q_key;

FOREACH i in ARRAY in_keywords
LOOP
keyword_key :=  INSERT INTO keywords(keyword) VALUES (in_keywords[i]) RETURNING k_key;
INSERT INTO qnkeywordmap(q_key, k_key) values (question_key, keyword_key)
END LOOP;

END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

1 Ответ

0 голосов
/ 14 июня 2019

Правильный способ использования INSERT ... RETURNING с предложением INTO:

INSERT INTO keywords ...
RETURNING k_key INTO keyword_key;
...