如何在游标声明

时间:2016-05-16 18:55:37

标签: postgresql

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

0 个答案:

没有答案