如何在PL/pgSQL IF语句中运行SELECT查询 [英] How to run SELECT queries in PL/pgSQL IF statements
本文介绍了如何在PL/pgSQL IF语句中运行SELECT查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用以下代码在PL/pgSQL IF语句中运行SELECT查询:
I am trying to run SELECT queries in PL/pgSQL IF statements using the code below:
DO
$do$
DECLARE
query_type real;
arr real[] := array[1];
BEGIN
IF query_type = 1 THEN
RETURN QUERY
SELECT "Westminster".*
FROM "Westminster"
WHERE ("Westminster".intersects = false AND "Westminster".area <= 100);
ELSE IF query_type = 0 THEN
RETURN QUERY
SELECT "Westminster".*
FROM "Westminster";
END IF;
END
$do$
但是我收到以下错误ERROR: cannot use RETURN QUERY in a non-SETOF function
.
有人知道我如何获得上述代码吗?谢谢.
Does anyone know how I can get the above code to work? Thank you.
更新:这最终对我有用:
CREATE OR REPLACE FUNCTION my_function(query_type integer)
RETURNS SETOF "Westminster" LANGUAGE plpgsql as $$
BEGIN
IF query_type = 1 THEN
RETURN QUERY
SELECT "Westminster".*
FROM "Westminster"
WHERE ("Westminster".intersects = false AND "Westminster".area <= 100);
ELSIF query_type = 0 THEN
RETURN QUERY
SELECT "Westminster".*
FROM "Westminster";
END IF;
END;
$$;
然后我像这样调用函数:
I then called the function like this:
SELECT * FROM my_function(1);
推荐答案
查看全文