Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
Postgresql 跳转到plpgsql函数中的另一个标签_Postgresql_Label_Plpgsql - Fatal编程技术网

Postgresql 跳转到plpgsql函数中的另一个标签

Postgresql 跳转到plpgsql函数中的另一个标签,postgresql,label,plpgsql,Postgresql,Label,Plpgsql,我在Postgres中开发了一个存储过程,遇到了一种情况,根据控制结构的结果,我必须访问不同的标签块。有什么可行的方法吗 很抱歉没有立即提供代码。以下是我对这个问题的概念解决方案: BEGIN IF LotFlag = 1 THEN IF lotno = '' THEN RETURN 3; ELSE SELECT * FROM "DEDGE_im_tblinventory_unposted"

我在Postgres中开发了一个存储过程,遇到了一种情况,根据控制结构的结果,我必须访问不同的标签块。有什么可行的方法吗

很抱歉没有立即提供代码。以下是我对这个问题的概念解决方案:

BEGIN
    IF LotFlag = 1 THEN
        IF lotno = '' THEN
            RETURN 3;
        ELSE
            SELECT * FROM "DEDGE_im_tblinventory_unposted"
            WHERE "DocRef" = docref
            AND "TranCode" = trancode
            AND "LotNo" = lotno;

            IF NOT FOUND THEN
                /*Go to testblock1*/
            ELSEIF FOUND THEN
                /*Go to testblock2*/
            ELSE
                /*Go to testblock3*/
            END IF;
        END IF;
    END IF;
END;

<<testblock1>>
BEGIN
    RETURN 1;       
END;

<<testblock2>>
BEGIN
    RETURN 1;       
END;

<<testblock3>>
BEGIN
    RETURN 1;       
END;

使用函数,而不是转到

        IF NOT FOUND THEN
            /* call f1() or f(1) */
        ELSEIF FOUND THEN
            /* call f(2) or f(2) */
        ELSE
            /* call f3() or f(3) */
        END IF;

你应该提供一些代码,让我们更容易给你一个相关的答案。看,plpgsql中没有GOTO是的,我实际上已经读过这个问题了。但有没有什么方法可以让我跳转、访问甚至运行另一块标签?因为如果我们使用EXIT,它只会转到下一个代码块,而我无法控制它。。另外,请始终包含函数头,它是任何plpgsql函数的一个组成部分。还有你的博士后版本。