如何将从插入查询返回的值分配给 PL/pgSQL 中的变量
How can I assign the value returned from an insert query to a variable in PL/pgSQL
我正在尝试在 Postgres 中创建一个函数来执行简单的插入操作,并且我想要插入操作的 ID 供以后使用。但我在第 question_key := INSERT INTO QUESTIONS(question, status, questionword) values (in_question, 'unanswered', in_questionword) RETURNING q_key;
行被说 'Synatx error near ('
这是正确的分配方式吗?
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;
在 INTO
子句中使用 INSERT ... RETURNING
的正确方法:
INSERT INTO keywords ...
RETURNING k_key INTO keyword_key;
我正在尝试在 Postgres 中创建一个函数来执行简单的插入操作,并且我想要插入操作的 ID 供以后使用。但我在第 question_key := INSERT INTO QUESTIONS(question, status, questionword) values (in_question, 'unanswered', in_questionword) RETURNING q_key;
行被说 'Synatx error near ('
这是正确的分配方式吗?
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;
在 INTO
子句中使用 INSERT ... RETURNING
的正确方法:
INSERT INTO keywords ...
RETURNING k_key INTO keyword_key;