我要宣告一個陣列variblebkgws為表gangwei與子集列名col1和col2,這里是我嘗試:
DO $$
DECLARE
bkgws gangwei(col1, col2)[] := {('fo1','bar1'),('fo2','bar2')}; -- here, syntax error
BEGIN
INSERT INTO gangwei (config_id, col1, col2) SELECT 1, col1, col2 FROM unnest(bkgws);
END;$$;
提供gangwei的所有列都是id, config_id, col1, col2.
文字('fo1','bar1'),('fo2','bar2')是從應用層構建的。
uj5u.com熱心網友回復:
您需要先通過命令創建復合型別 CREATE TYPE AS
CREATE TYPE gangwei AS (col1 varchar, col2 varchar);
DO $$
DECLARE
bkgws gangwei[] DEFAULT '{"(foo, bar)", "(foo2, bar2)"}';
r record;
BEGIN
FOR r IN SELECT * FROM unnest(bkgws)
LOOP
RAISE NOTICE '% %', r.col1, r.col2;
END LOOP;
END;
$$;
NOTICE: foo bar
NOTICE: foo2 bar2
DO
uj5u.com熱心網友回復:
您需要unpack在陣列時指定列名:
... FROM unnest(bkgws) AS arr(col1,col2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/366793.html
