具有多个IF-ELSE条件的postgresql创建函数
我正在postgresql中创建一个函数,它将执行以下操作:具有多个IF-ELSE条件的postgresql创建函数,sql,database,function,postgresql,stored-procedures,Sql,Database,Function,Postgresql,Stored Procedures,我正在postgresql中创建一个函数,它将执行以下操作: CREATE OR REPLACE FUNCTION check_label_id_exist(_labelid integer, OUT result text) AS $BODY$ DECLARE BEGIN SELECT pkid FROM table_1 WHERE label_id = _labelid; IF FOUND THEN result := 'true'; RETURN;
CREATE OR REPLACE FUNCTION check_label_id_exist(_labelid integer, OUT result text) AS
$BODY$
DECLARE
BEGIN
SELECT pkid FROM table_1 WHERE label_id = _labelid;
IF FOUND THEN
result := 'true';
RETURN;
IF NOT FOUND THEN
SELECT pkid FROM table_2 WHERE label_id = _labelid;
IF FOUND THEN
result := 'true';
RETURN;
IF NOT FOUND THEN
SELECT pkid FROM table_3 WHERE label_id = _labelid;
IF FOUND THEN
result := 'true';
RETURN;
IF NOT FOUND THEN
result := 'false';
RETURN;
END
$BODY$ language plpgsql;
在此函数首先在
表1
中查找数据。如果没有数据,则它将转到下一个表,依此类推。如果任何一个表有数据,它将打破条件并返回true,否则最后将返回false。我认为我在这里写的代码是不正确的。请帮助实现我的目标。这可能是一种更简单的方法,可以用更少的代码完成您要做的事情
CREATE OR REPLACE FUNCTION check_label_id_exist(_labelid integer,
OUT result text) AS
$BODY$
DECLARE
BEGIN
SELECT pkid FROM table_1 WHERE label_id = _labelid;
IF FOUND THEN
result := 'true';
RETURN;
end if;
SELECT pkid FROM table_2 WHERE label_id = _labelid;
IF FOUND THEN
result := 'true';
RETURN;
end if;
SELECT pkid FROM table_3 WHERE label_id = _labelid;
IF FOUND THEN
result := 'true';
RETURN;
end if;
result := 'false';
RETURN;
END
$BODY$ language plpgsql;
CREATE OR REPLACE FUNCTION check_label_id_exist(_labelid integer, OUT result text) as
$BODY$
BEGIN
IF EXISTS(SELECT 1 FROM table_1 WHERE label_id = _labelid limit 1) THEN
result := 'true';
ELSEIF EXISTS(SELECT 1 FROM table_2 WHERE label_id = _labelid limit 1) THEN
result := 'true';
ELSEIF EXISTS(SELECT 1 from table_3 WHERE label_id = _labelid limit 1) THEN
result := 'true';
ELSE
result := 'false';
END IF;
RETURN;
END
$BODY$ language plpgsql;
@NeilMcGuigan工会可能是个好主意。但我不擅长这个。但显然我想试试。你能给我一个样品吗。我只想返回真或假。如果有任何查询的结果,它将返回true,否则返回false。谢谢Juan,非常简单的方法。只有我在代码中做了一些修改以满足我的要求。