我创建了一个存储过程,它返回不同的表模式名。我的数据库使用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".;