sql - PostgreSQL - 错误 : query has no destination for result data

标签 sql postgresql

为什么我会收到以下错误?:

错误:查询没有结果数据的目标

这是我的功能:

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 ),并且我不确定您想用 DO...END block ,但我只是把它拿出来。

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 - 错误 : query has no destination for result data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42149695/

相关文章:

php - MySQL 查询帮助 - 最后已知的测试日期和当前测试日期

java - jOOQ 无法在 PostgreSQL 模式下为 H2 数据库正确翻译 SQL

sql - 获取最近 10 个日期的行

postgresql - 如何在带有 PostgreSQL 数据库的 Web 应用程序中拥有完整的离线功能?

SQL:从输出中的父表中选择数据并从两个子表中求和列

mysql - 计算 VARCHAR 字段中字符串出现的次数?

sql - 要清理的电话号码模式

sql - 需要帮助为没有订单的月份生成 NULL 条目

postgresql - 如何使用 Refcursor 变量的值 FETCH

php - ON CONFLICT 使用 pg_prepare() 错误 'name' 不存在