【发布时间】:2021-09-27 16:35:38
【问题描述】:
我是 SQL 函数和 postgreSQL 的新手。我只是尝试选择我的 compte 表中的一些邮件以在之后更新它们,所以我创建了选择和更新函数,但我总是出现错误:
“错误:查询“SELECT emailAnonymisation()”返回多行 上下文:语句块局部变量初始化期间的 PL/pgSQL 函数 updateMail() 第 5 行"
问题出在我的更新函数中,但不知道是变量问题还是函数逻辑问题...
我的选择功能
CREATE OR REPLACE FUNCTION emailAnonymisation()
RETURNS table (mail varchar)
LANGUAGE plpgsql
AS $$
BEGIN
return query
SELECT compte.mail
FROM compte
limit 100;
END
$$;
我调用 emailAnonymisation() 函数的更新函数以及我认为问题出在哪里
CREATE OR REPLACE FUNCTION updateMail()
RETURNS varchar[] AS
$BODY$
DECLARE
_tbl varchar[]:=emailAnonymisation();
t text;
BEGIN
FOREACH t IN ARRAY _tbl
LOOP
EXECUTE '
UPDATE ' || t || '
SET t = REPLACE(SUBSTR(t,LOCATE('@',t) + 1),"X")
WHERE LOCATE('@',t) > 0;';
END LOOP;
END;
$BODY$ LANGUAGE plpgsql;
更新调用
select updateMail();
【问题讨论】:
标签: sql postgresql