我正在开发一个函数,如果昨天至少写入了一个条目,它应该查找一些表。在任何情况下,TRUE 或 FALSE 都应该写入另一个表:
CREATE OR REPLACE FUNCTION SANDBOX.MY_FUNCTION(MY_TABLE regclass, DATE_DIFF INTEGER)
RETURNS void AS $$
DECLARE
RESULT BOOLEAN;
BEGIN
RESULT :=
EXECUTE 'EXISTS
(SELECT DATE FROM ' || MY_TABLE ||
' WHERE DATE = CURRENT_DATE -DATE_DIFF
LIMIT 1)';
INSERT INTO SANDBOX.UPDATED_TODAY VALUES (MY_TABLE, CURRENT_DATE, RESULT);
END;
$$ LANGUAGE plpgsql;
但是,我得到了
[42704]ERROR: type "execute does not exist"
这是我的函数调用:
SELECT SANDBOX.MY_FUNCTION('datawarehouse_a.table_2', 1);
有人可以帮忙吗? 提前致谢! :-)
如果您对第二个参数感到好奇:对于某些表,我正在查看是否有一个条目不是昨天,而是 2 天前。
最佳答案
EXECUTE
不会返回那样的结果。您需要 EXECUTE INTO 将结果放入变量中:
DO $$
DECLARE
result BOOLEAN;
BEGIN
EXECUTE 'SELECT EXISTS (SELECT 1 FROM generate_series(1, 10))'
INTO result;
RAISE NOTICE '%', result;
END $$
打印:注意:t
关于sql - "Execute does not exist"写入 Postgres 函数时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53540433/