代码之家  ›  专栏  ›  技术社区  ›  Denise

将存储过程结果集保存到表中

  •  0
  • Denise  · 技术社区  · 4 年前

    我创建了一个存储过程,它返回不同的表模式名。我的数据库使用redshift,我使用sqlworkbench/J来创建它。

    CREATE OR REPLACE PROCEDURE get_dist_schema(rsout INOUT refcursor)
    AS $$
    BEGIN 
      OPEN rsout FOR SELECT DISTINCT table_schema FROM information_schema.tables;
    END;
    $$ LANGUAGE plpgsql;
    
    BEGIN;
    CALL get_dist_schema('sname');
    FETCH ALL FROM sname;
    
    commit;
    

    从sname获取全部的结果如下所示:

    table_schema
    tableA
    tableB
    tableC
    tableD
    

    我想将结果保存在一个表中,这样当我对一个表执行select语句时,同样的结果也会出现。

    我试过这个:

    BEGIN;
    CALL get_dist_schema('sname');
    FETCH ALL FROM sname INTO public.distTable
    

    错误是:

    Invalid operation: syntax error at or near "INTO" 
    Position: 22;
    

    把我的一切都带到public.distTable文件

    更新: 如果我使用SELECT INTO:

    CREATE OR REPLACE PROCEDURE get_dist_schema(rsout INOUT refcursor)
    AS $$
    BEGIN 
      OPEN rsout FOR SELECT DISTINCT table_schema INTO public.distTable FROM information_schema.tables;
    END;
    $$ LANGUAGE plpgsql;
    

    CALL get_dist_schema('sname')
    
    [Amazon](500310) Invalid operation: Column "table_schema" has unsupported type "information_schema.sql_identifier".;
    
    0 回复  |  直到 4 年前
    推荐文章