postgresql - 返回单个值 PSQL - 查询没有结果数据的目的地
问题描述
我正在编写一个接收股票代码的函数(例如 MSFT)
- 查询表以查看代码是否已存在,如果确实返回相应的 ID
- 如果ticker不存在,则向表中插入一条新记录并返回对应的ID
我的功能很简单:
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
)。
我检查了其他来源,但无法弄清楚为什么会导致错误。为什么我不能从这里的函数返回?
解决方案
PostgreSQL 似乎将 1 列表中的单行视为与标量变量不同的类型(不同于 TSQL)。我上面查询的最后几行需要更改为:
INSERT INTO ticker (name)
VALUES ($1)
RETURNING ID;
至
INSERT INTO ticker (name)
VALUES ($1)
RETURNING ID INTO currentTickerID;
RETURN currentTickerID;
推荐阅读
- android - 如何使用 getResourceAsStream 修复未找到的资源
- excel - 如何强制excel获得焦点并刷新UI
- angular - 如何在Angular中注册触摸移动事件?
- html - 使用引导程序调整图像大小
- selenium-webdriver - “如何在 org.openqa.selenium.support.ui.Select 修复'。
' 硒错误" - c# - 当数组计数不均匀时继续接收“System.ArgumentException”
- vim - 是否有一个简单的命令可以让 NERDTree 换边?
- java - 为什么我们不能有名称与类名不同的构造函数,只要它们是唯一的
- django - Django 在 filter() 之后使用模型管理器方法
- sql-server - Azure VM 备份项中最近创建的 SQL 未显示