CREATE OR REPLACE FUNCTION for_example()
RETURNS integer AS
$func$
DECLARE
r "WEBHOST";
b "WEBHOST"[]; -- this works
BEGIN
FOR r IN
SELECT * FROM "WEBHOST"
LOOP
b := b || r; -- this, too
END LOOP;
RAISE NOTICE '%', b; -- get feedback
RETURN 33;
END
$func$ LANGUAGE plpgsql; -- and lose the quotes
%rowtype
nói chung là không cần thiết. Thông thường, loại hàng liên quan của bảng có sẵn dưới dạng loại cùng tên.
Và không không trích dẫn tên ngôn ngữ.
Và bạn không thể chỉ có các lệnh gọi hàm độc lập trong plpgsql . Sử dụng một nhiệm vụ thay thế.
Cũng không phải là một ý kiến hay khi sử dụng số nhận dạng CaMeL-case trong Postgres. Sử dụng số nhận dạng hợp pháp, viết thường để giúp cuộc sống của bạn dễ dàng hơn.
Điều tốt nhất cho cuối cùng :Điều này có thể đơn giản hơn nhiều với hàm tổng hợp array_agg()
:
CREATE OR REPLACE FUNCTION for_example()
RETURNS integer AS
$func$
DECLARE
b "WEBHOST"[];
BEGIN
SELECT array_agg(tbl) INTO b FROM "WEBHOST" tbl;
RAISE NOTICE '%', b;
RETURN 33;
END
$func$ LANGUAGE plpgsql;