我正在研究一个函数,如果昨天至少写了一个条目,该函数应该查找一些表。无论如何,应将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天前的条目。
答案 0 :(得分: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 $$
打印:NOTICE: t