为什么我会出现以下错误?:
错误:查询没有结果数据的目标
这是我的职责:

CREATE OR REPLACE FUNCTION public.SumASCII(
    value character varying)
    RETURNS int
    LANGUAGE 'plpgsql'
    COST 100.0
    VOLATILE NOT LEAKPROOF
AS $function$

    DECLARE finalResult int;
    DECLARE tempChar character;
    DECLARE valueLength int;
    DECLARE tempResult int;

    BEGIN
        SELECT LENGTH(value) INTO valueLength;
        SELECT finalResult = 0;
        SELECT tempResult = 0;

        DO
        $do$
        BEGIN
        FOR i IN 1..valueLength LOOP
           SELECT SUBSTRING(value, i, 1) INTO tempChar;
           SELECT ASCII(tempChar) INTO tempResult;
           SELECT finalResult += tempResult;
        END LOOP;
        END
        $do$;

        RETURN finalResult;
    END;

$function$;

我也用同样的错误看了其他问题,但它们似乎与我的问题无关。我相信答案很简单,但我似乎看不出问题所在。。我声明一个int,我返回一个int。。
按如下方式调用函数:
SELECT SumASCII('abc')

最佳答案

我可以通过简化很多东西来让它工作。我相信DECLARE只需要使用一次(例如https://www.postgresql.org/docs/9.6/static/plpgsql-declarations.html),我不确定您想用DOEND块做什么,但我只是把它去掉了。

CREATE OR REPLACE FUNCTION public.SumASCII(
    value character varying)
    RETURNS int
    LANGUAGE 'plpgsql'
    COST 100.0
    VOLATILE NOT LEAKPROOF
AS $function$

DECLARE
    finalResult int := 0;
BEGIN
    FOR i IN 1..LENGTH(value) LOOP
       finalResult := finalResult + ASCII(SUBSTRING(value, i, 1));
    END LOOP;
    RETURN finalResult;
END;
$function$;

SELECT SumASCII('abc')正在返回294

关于sql - PostgreSQL-错误:查询没有结果数据的目的地,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42149695/

10-11 06:31
查看更多