Bạn có thể sử dụng cú pháp thay thế bằng ký tự mảng thay vì phương thức khởi tạo mảng, là một cấu trúc giống như hàm Postgres và có thể gây ra sự cố khi bạn cần truyền giá trị - như trong một tuyên bố đã chuẩn bị:
SELECT myschema.myfunc('0d6311cc-0d74-4a32-8cf9-87835651e1ee'
, '{"(0d6311cc-0d74-4a32-8cf9-87835651e1ee, 25)"
, "(6449fb3b-844e-440e-8973-31eb6bbefc81, 10)"}'::mytype[]);
Tôi đã thêm dấu ngắt dòng giữa hai loại hàng trong mảng để hiển thị. Đó là hợp pháp.
Cách tìm cú pháp chính xác cho bất kỳ nghĩa đen?
Chỉ cần hỏi Postgres. Đây là bản demo:
CREATE TABLE mytype (id uuid, amount numeric(13,4));
INSERT INTO mytype VALUES
('0d6311cc-0d74-4a32-8cf9-87835651e1ee', 25)
,('6449fb3b-844e-440e-8973-31eb6bbefc81', 10);
SELECT ARRAY(SELECT m FROM mytype m);
Lợi nhuận:
{"(0d6311cc-0d74-4a32-8cf9-87835651e1ee,25.0000)","(6449fb3b-844e-440e-8973-31eb6bbefc81,10.0000)"}
db <> fiddle here
Bất kỳ bảng nào (kể cả các bảng tạm thời) đều tạo ra một loại hàng có cùng tên.