官方文件:陣列 http://www.postgresql.org/docs/9.5/static/functions-array.html
建立 run () 涵式:
整數陣列:
CREATE OR REPLACE FUNCTION run(data int[]) RETURNS SETOF int AS
$BODY$
DECLARE i int;
BEGIN
FOR i IN 1 .. array_upper(data, 1) LOOP
RETURN NEXT i;
END LOOP;
END
$BODY$
LANGUAGE 'plpgsql';
查詢:
SELECT run('{1,2,3}');
輸出結果:
run
-----
1
2
3
文字陣列 1 (使用 Foreach):
CREATE OR REPLACE FUNCTION run(datas text[]) RETURNS SETOF text AS
$BODY$
DECLARE data TEXT;
BEGIN
FOREACH data IN ARRAY datas LOOP
RETURN NEXT data;
END LOOP;
END
$BODY$
LANGUAGE 'plpgsql';
查詢:
SELECT run('{AAA, BBB, CCC}');
run
-----
AAA
BBB
CCC
文字陣列 2 (使用 For):
CREATE OR REPLACE FUNCTION run(datas text[]) RETURNS SETOF text AS
$BODY$
DECLARE data TEXT;
BEGIN
FOR i IN 1..array_length(datas, 1) LOOP
data := datas[i];
RETURN NEXT data;
END LOOP;
END
$BODY$
LANGUAGE 'plpgsql';
查詢:
SELECT run('{AAA, BBB, CCC}');
run
-----
AAA
BBB
CCC
文字陣列 2 (空值不報錯):
CREATE OR REPLACE FUNCTION run(datas text[]) RETURNS SETOF text AS
$BODY$
BEGIN
FOR i IN 1..coalesce(array_length(datas, 1), 0) LOOP
RETURN NEXT datas[i];
END LOOP;
END
$BODY$
LANGUAGE 'plpgsql';
執行:
SELECT run('{}'); // 不會抱錯
SELECT run('{AAA,BBB}');