DO $$
DECLARE DATABASE_TO_READ varchar DEFAULT 'db_name';
DECLARE containers REFCURSOR;
DECLARE dates_for_looping REFCURSOR;
BEGIN
SELECT INTO containers EXECUTE format('
SELECT
container_id as cid,
MIN(timestamp) AS container_start_datetime,
MAX(timestamp) AS container_end_datetime
FROM
%1$s.events
GROUP BY
1',DATABASE_TO_READ)
;
-- ....lots of other things.....
我得到的错误是SELECT INTO行上的Error : ERROR: syntax error at or near "("
。
我在Postgres 9.5.01。
我理解现在看来,模式名称看起来不一定是一个变量,但它必须是为了通过模式进行循环而不是在模式中做很多UNION。
这个问题:how to reference a schema variable in plpgsql会有我的答案,除了我需要使用模式变量进行游标声明。
此页面似乎有一个答案,但有一堆我不熟悉的EXEC SQL
语法:http://www.postgresql.org/docs/9.4/static/ecpg-dynamic.html