我很难记住在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()
函数?"
答案 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;