【问题标题】:ERROR: missing "LOOP" at end of SQL expression错误:在 SQL 表达式末尾缺少“LOOP”
【发布时间】:2017-03-19 20:25:09
【问题描述】:

错误:SQL 表达式末尾缺少“LOOP” 上下文:PL/pgSQL 函数“player_height_rank”在第 9 行附近的编译

这是我的代码:

CREATE OR REPLACE FUNCTION player_height_rank (irstname VARCHAR, lastname VARCHAR) RETURNS int AS $$ 

DECLARE

    rank INTEGER := 0;
    offset INTEGER := 0;
    tempValue INTEGER := NULL;
    r record;
BEGIN

FOR r IN SELECT ((p.h_feet * 30.48) + (p.h_inches * 2.54)) AS height, p.firstname, p.lastname
    FROM players p
    WHERE p.firstname = $1 AND p.lastname = $2;
    ORDER BY ((p.h_feet * 30.48) + (p.h_inches * 2.54)) DESC, p.firstname, p.lastname

    LOOP

        IF r.height = tempValue then
            offset := offset + 1;
        ELSE
            rank := rank + offset + 1;
            offset := 0;
            tempValue := r.height;
        END IF;

        IF r.lastname = $4 AND r.lastname = $3 THEN
            RETURN rank;
        END IF;
    END LOOP;

    -- not in DB
    RETURN -1;

    END;
    $$ LANGUAGE plpgsql;

【问题讨论】:

  • 请发布问题,而不是错误和一些代码。你尝试了什么?你在哪里卡住了?

标签: postgresql plpgsql


【解决方案1】:

在你的 WHERE 子句中分号是多余的

WHERE p.firstname = $1 AND p.lastname = $2; -- delete semicolon

更正该部分并重试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多