sql - "Execute does not exist"写入 Postgres 函数时

标签 sql postgresql function

我正在开发一个函数,如果昨天至少写入了一个条目,它应该查找一些表。在任何情况下,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/

相关文章:

javascript - 函数前面的感叹号有什么作用?

mysql - 如何在 SQL 中查找一列上的元素以查找其他列中间隙不超过 3 个的值

mysql - SQL 组合多个 SELECT 语句

sql - 在 PostgreSQL 中将日期转换为等效的 BC 日期

ruby-on-rails - 在 postgres rails 中为 Enum 类型添加额外的值

javascript - 将对象参数传递给另一个函数 - Javascript

php - 如何 MySQL SELECT 并按列排序并按不同表中的另一个键排序

PHP 从 MySQL 获取 1 个结果

python - 将 postgres "time with timezone"与 sqlalchemy 一起使用

html - 使用 BASH 和 AWK 创建 HTML 表格