Postgresql 从postgres中的公共表表达式返回数据
我正试图将公共表表达式中的一些数据返回到后端,但无法返回,因为Postgres看不到该表Postgresql 从postgres中的公共表表达式返回数据,postgresql,Postgresql,我正试图将公共表表达式中的一些数据返回到后端,但无法返回,因为Postgres看不到该表 CREATE OR REPLACE FUNCTION request( question_id_func INTEGER, requester_account_id_func INTEGER, counter_func NUMERIC ) RETURNS INTEGER AS $$ with notif AS ( INSET INTO notification(..
CREATE OR REPLACE FUNCTION request(
question_id_func INTEGER,
requester_account_id_func INTEGER,
counter_func NUMERIC
) RETURNS INTEGER AS $$
with notif AS (
INSET INTO notification(...) VALUES (...) RETURNING *
)
UPDATE question....
RETURN (SELECT notif_id FROM notif);
END $$ LANGUAGE PLPGSQL
有谁对如何从CTE中提取数据并返回有更好的想法吗?
非常感谢。您需要将UPDATE语句放入CTE,然后使用最终SELECT语句将输出分配给函数变量 例如:
CREATE OR REPLACE FUNCTION request(
question_id_func INTEGER,
requester_account_id_func INTEGER,
counter_func NUMERIC
) RETURNS INTEGER AS $body$
DECLARE
result integer;
BEGIN
WITH notif AS (
INSERT INTO notification(...) VALUES (...) RETURNING *
),
question_update AS (
UPDATE question....
)
SELECT notif.notif_id INTO result FROM notif;
RETURN result;
END $body$ LANGUAGE PLPGSQL
您需要将UPDATE语句放入CTE,然后使用最终SELECT语句将输出分配给函数变量 例如:
CREATE OR REPLACE FUNCTION request(
question_id_func INTEGER,
requester_account_id_func INTEGER,
counter_func NUMERIC
) RETURNS INTEGER AS $body$
DECLARE
result integer;
BEGIN
WITH notif AS (
INSERT INTO notification(...) VALUES (...) RETURNING *
),
question_update AS (
UPDATE question....
)
SELECT notif.notif_id INTO result FROM notif;
RETURN result;
END $body$ LANGUAGE PLPGSQL