我正在嘗試編寫一個函數以從Redshift獲取模式中的對象列表。我創建了一個從RDS PostgreSQL到Redshift的dblink。查詢在單獨調用時工作得很好,但在使用參數寫入函數時不起作用。我想傳遞多個參數(模式名稱),因此我使用VARIADIC參數。該函數看起來像下面 -Postgresql函數 - 使用文本類型的VARIADIC參數
CREATE FUNCTION f_fetch_tables(VARIADIC list text[])
RETURNS VOID
AS $$
DECLARE
begin_time TIMESTAMP;
expire_time TIMESTAMP;
BEGIN
/* To fetch the list of all objects from Redshift */
EXECUTE 'drop table if exists tmp_rs_obj_list;
create table tmp_rs_obj_list as
SELECT * FROM dblink(''rs_link'',$REDSHIFT$ select * from (select schemaname,
tablename from pg_tables UNION select schemaname, viewname from pg_views) where schemaname
not in (array_to_string($1,'','')) $REDSHIFT$) AS t1 (schema_nm varchar(30), obj_nm varchar(100))' using list;
END;
$$
LANGUAGE plpgsql
;
功能編譯罰款,併成功創建,但我不能想出一個辦法來稱呼它 -
使用這些電話,到目前爲止,沒有任何的運氣 -
選擇f_fetch_tables( '{公衆,pg_catalog}')
錯誤:沒有參數$ 1 其中:發生在DBLINK CONNEC錯誤名爲「未命名」的命令:不能 執行查詢。
SELECT * FROM f_fetch_tables(可變參數 '{公衆,pg_catalog}')
錯誤:沒有參數$ 1 其中:發生在一個名爲 「無名」 dblink的連接錯誤:無法執行查詢。
任何建議將是非常有用的。
謝謝 卡姆利什
謝謝@klin。這對我工作..! –