所以我試圖運行這個功能
CREATE OR REPLACE FUNCTION TableIteration()
RETURNS TABLE(table_schema text, table_name text)
LANGUAGE plpgsql
AS
$$
DECLARE
tgt_schema varchar;
list varchar[] := ARRAY[
'sometext1',
'sometext2',
'sometext3',
'sometext4',
'sometext5',
'sometext6',
'sometext7',
'sometext8',
'sometext9'
];
BEGIN
FOREACH tgt_schema IN ARRAY list
LOOP
RETURN QUERY EXECUTE
'SELECT t.table_schema, t.table_name from information_schema.tables t';
END LOOP;
END
$$
我得到
錯誤:查詢結構與函式結果型別不匹配
詳細資訊:回傳型別 information_schema.sql_identifier 與第 1 列中的預期型別文本不匹配。
但是如果我將型別更改為 sql_identifier 我無法創建函式,因為它說沒有這種型別。所以問題是我該怎么辦?
uj5u.com熱心網友回復:
資訊模式列有一個奇怪的資料型別(我認為這是 SQL 標準規定的)。只需將它們轉換為文本:
'SELECT t.table_schema::text, t.table_name::text from information_schema.tables t';
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/478868.html
標籤:PostgreSQL
上一篇:與函式中的變數連接會產生錯誤
