【发布时间】:2019-12-31 18:28:32
【问题描述】:
我有几个查询,我试图将它们组合成一个返回一些值的函数。除了我不知道如何正确地做到这一点。
这是我试图输出的逻辑:
if((SELECT parent_id FROM event_comments WHERE comment_id = $1) == null){
WITH cte AS (DELETE FROM event_comments WHERE thread_id = '1BZbAR'
RETURNING parent_id, comment_id, thread_id)
SELECT parent_id, comment_id, thread_id
FROM cte
WHERE parent_id IS NULL;
}else{
DELETE FROM event_comments WHERE comment_id = $1 AND created_by = $3
returning parent_id, comment_id, thread_id
}
获取语法错误类型“cte”不存在?
CREATE FUNCTION deleteComment(comment_id integer, created_by UUID, thread_id integer)
RETURNS cte AS $$
BEGIN
CASE WHEN (SELECT parent_id FROM event_comments WHERE comment_id = $1) is NULL
THEN
WITH cte AS (
DELETE FROM event_comments WHERE thread_id = $3
RETURNING parent_id, comment_id, thread_id
)
SELECT parent_id, comment_id, thread_id
FROM cte
WHERE parent_id IS NULL;
ELSE
WITH cte AS (
DELETE FROM event_comments WHERE comment_id = $1 AND created_by = $2
returning parent_id, comment_id, thread_id
)
END; $$
LANGUAGE plpgsql;
【问题讨论】:
标签: sql postgresql plpgsql