如何在具有 select 语句的 pgsql 函数中引用时间戳变量
how to refer timestamp variable in pgsql function having select statement
您好,我正在尝试编写一个 pgsql 函数,该函数将 table 数据复制到一个 csv 文件中,但在使用函数内部的变量值时遇到了困难,如下所示:
CREATE OR REPLACE FUNCTION test3() RETURNS void
LANGUAGE plpgsql
AS $$
DECLARE
_currenttime timestamp := now();
BEGIN
copy (SELECT * FROM table1 WHERE createdtime < _currenttime - INTERVAL '1 days') TO '/tmp/table1.csv';
END
$$;
访问函数时出错:
select test3();
ERROR: column "_currenttime" does not exist LINE 1: ...py (SELECT *
FROM table1 WHERE createdtime < _currentti...
^ QUERY: copy (SELECT * FROM bpminstance WHERE createdtime < _currenttime -
INTERVAL '1 days') TO '/tmp/table1.csv'
请求您的帮助。
CREATE OR REPLACE FUNCTION test3() RETURNS void
LANGUAGE plpgsql
AS $$
DECLARE
_currenttime timestamp;
qry text;
BEGIN
_currenttime := NOW() - interval '1 day';
select 'copy (SELECT * FROM table1 WHERE createdtime < '''||_currenttime||''') TO ''/tmp/table1.csv''' into qry;
execute qry;
--codes
END
$$;
您好,我正在尝试编写一个 pgsql 函数,该函数将 table 数据复制到一个 csv 文件中,但在使用函数内部的变量值时遇到了困难,如下所示:
CREATE OR REPLACE FUNCTION test3() RETURNS void
LANGUAGE plpgsql
AS $$
DECLARE
_currenttime timestamp := now();
BEGIN
copy (SELECT * FROM table1 WHERE createdtime < _currenttime - INTERVAL '1 days') TO '/tmp/table1.csv';
END
$$;
访问函数时出错:
select test3();
ERROR: column "_currenttime" does not exist LINE 1: ...py (SELECT * FROM table1 WHERE createdtime < _currentti... ^ QUERY: copy (SELECT * FROM bpminstance WHERE createdtime < _currenttime - INTERVAL '1 days') TO '/tmp/table1.csv'
请求您的帮助。
CREATE OR REPLACE FUNCTION test3() RETURNS void
LANGUAGE plpgsql
AS $$
DECLARE
_currenttime timestamp;
qry text;
BEGIN
_currenttime := NOW() - interval '1 day';
select 'copy (SELECT * FROM table1 WHERE createdtime < '''||_currenttime||''') TO ''/tmp/table1.csv''' into qry;
execute qry;
--codes
END
$$;