gpt4 book ai didi

sql - 查询没有结果数据的目的地 - PostgreSQL

转载 作者:行者123 更新时间:2023-11-29 11:51:45 25 4
gpt4 key购买 nike

我在 PostgreSQL 中创建了以下存储过程:

CREATE OR REPLACE function incomingdel(IN del_ID varchar) RETURNS VOID AS $$
DECLARE xyz integer;
BEGIN
SELECT * INTO xyz FROM incomingcheck(cast(del_ID as integer));
IF xyz <> 1
THEN
SELECT * INTO xyz FROM perfdel(cast(del_ID as integer));
END IF;

END
$$ LANGUAGE plpgsql

即使函数返回 VOID,我仍然得到

Error: query has no destination for result data

当我执行函数时。有人可以帮忙吗?

谢谢

最佳答案

当您在 PL/pgSQL 函数中执行 SELECT * INTO ... 时,您需要提供类型为 record 或行源行类型的变量,即使函数只返回一个整数。函数 incomingcheck(int)perfdel(int) 显然返回单个 integer 在这种情况下你可以简化你的函数:

CREATE FUNCTION incomingdel(del_ID integer) RETURNS VOID AS $$
DECLARE
xyz integer;
BEGIN
xyz := incomingcheck(del_ID);
IF xyz <> 1 THEN
xyz := perfdel(del_ID);
END IF;
-- Do something with xyz
END; $$ LANGUAGE plpgsql;

如果功能实际上在调用的函数中(因此您不处理 xyz 值),那么它仍然变得更简单:

CREATE FUNCTION incomingdel(del_ID integer) RETURNS VOID AS $$
BEGIN
IF incomingcheck(del_ID) <> 1 THEN
perfdel(del_ID);
END IF;
END; $$ LANGUAGE plpgsql;

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com