首页 > 解决方案 > 返回单个值 PSQL - 查询没有结果数据的目的地

问题描述

我正在编写一个接收股票代码的函数(例如 MSFT)

我的功能很简单:

CREATE OR REPLACE FUNCTION createTicker (ticker varchar(10)) RETURNS int 
AS $$
    DECLARE
        currentTickerID int := getTickerID(ticker);
        
    BEGIN
        IF currentTickerID IS NOT NULL THEN
            RETURN currentTickerID;
        END IF;
        
        INSERT INTO ticker (name)
        VALUES             ($1)
        RETURNING ID;
    
    END;    
$$ 
LANGUAGE PLPGSQL;

调用此函数,我收到以下错误:

'查询没有结果数据的目的地'(引用行RETURN currentTickerID)。

我检查了其他来源,但无法弄清楚为什么会导致错误。为什么我不能从这里的函数返回?

标签: postgresqlfunction

解决方案


PostgreSQL 似乎将 1 列表中的单行视为与标量变量不同的类型(不同于 TSQL)。我上面查询的最后几行需要更改为:

INSERT INTO ticker (name)
        VALUES             ($1)
        RETURNING ID;

INSERT INTO ticker (name)
VALUES             ($1)
RETURNING ID INTO currentTickerID;

RETURN currentTickerID;

推荐阅读