如何在函数中放置redshift查询?

时间:2017-12-04 13:31:19

标签: sql amazon-redshift

我很难记住在redshift中列出所有表的查询:

SELECT DISTINCT tablename
FROM pg_table_def
WHERE schemaname = 'public'
ORDER BY tablename;

所以我决定创建一个对我有用的功能。但事实证明,红移不理解"返回表"语句:

ERROR:  syntax error at or near "TABLE"
LINE 2: RETURNS TABLE (tablename varchar)
            ^

我尝试过使用其他返回类型

CREATE FUNCTION show_tables()
RETURNS ANYELEMENT VOLATILE
AS 'SELECT DISTINCT tablename
    FROM pg_table_def
    WHERE schemaname = public
    ORDER BY tablename;'
LANGUAGE SQL;

但我收到错误ERROR: anyelement is not a supported sql UDF return type

所以,我的问题是:"有没有办法在redhsift中创建show_tables()函数?"

2 个答案:

答案 0 :(得分:1)

如果您的返回类型为anyelement,则至少有一个输入参数必须anyelement

如需参考,请访问Amazon Redshift Documentation

的相关部分(位于页面底部)

答案 1 :(得分:0)

创建函数带有$$表示法(美元表示法)。请查看AWS文档。

为此我希望以下帮助:

CREATE FUNCTION show_tables(Some arguments here if required)
RETURNS ANYELEMENT VOLATILE 
AS $_$ SELECT DISTINCT tablename
    FROM pg_table_def
    WHERE schemaname = public
    ORDER BY tablename
    $_$
LANGUAGE sql;