我想要一個函數,它返回給定表名的逗號分隔列標題的文本字符串。下面的代碼編譯得很好,並且不會產生任何錯誤,但是我不能讓它返回除了NULL
之外的其他任何內容。在PostgreSQL中通過函數返回列的列表
CREATE OR REPLACE FUNCTION myschema.return_column_list(tab_name TEXT)
RETURNS text AS
$BODY$
DECLARE
one_column record;
column_list TEXT;
BEGIN
FOR one_column IN
SELECT column_name FROM information_schema.columns
WHERE table_schema = 'myschema'
AND table_name = format('%s', tab_name)
LOOP
column_list = column_list || one_column || ',';
END LOOP;
column_list = left(column_list,length(column_list) - 1);
RETURN column_list;
END;
$BODY$ LANGUAGE 'plpgsql';
更新:
終於得到它通過改變DECLARE
部分從
DECLARE
one_column record;
column_list TEXT;
到
DECLARE
one_column record;
column_list TEXT = '';
按照第一個例子here。花了整整一個早上試圖找出這一個,任何人都可以解釋爲什麼我必須這樣做?
'one_column'是包含單個屬性的**記錄**。要獲得實際的'column_name'值,你必須使用'one_column.column_name'。 –
'column_list TEXT;'將'column_list'初始化爲'null'。將值連接到'null'值會產生'null' –
@a_horse_with_no_name它是拋出我的變量初始化位!一旦你知道就會很有意義 - 將會讀到它。 – Alex