Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有多个IF-ELSE条件的postgresql创建函数_Sql_Database_Function_Postgresql_Stored Procedures - Fatal编程技术网

具有多个IF-ELSE条件的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;

我正在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;
    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,非常简单的方法。只有我在代码中做了一些修改以满足我的要求。