Postgresql 9.3.25 Tài liệu | ||||
---|---|---|---|---|
prev | UP | Chương 35.SQL | Tiếp theo |
Như được mô tả trongPhần, PostgreSQLcó thểSQLNgôn ngữ. Tạo a
kèo bóng đá c1 ví dụ trong phần này có thể được tìm thấy trongComplex.sqlvàphức tạp.ctrongsrc/hướng dẫnThư mục củareadmeTệp
Một loại do kèo bóng đá c1 phải luôn có các chức năng đầu vào và đầu ra.
Giả sử chúng ta muốn kèo bóng đá c1 một loạiphức tạpđại diện cho kèo bóng đá c1 số phức. Một cách tự nhiên để đại diện cho một
Typedef Struct Complex
Chúng ta sẽ cần biến điều này thành kèo bóng đá c1 tài liệu vượt qua, vì nóDatumGiá trị.
Là biểu diễn chuỗi bên ngoài của kèo bóng đá c1, chúng tôi chọn một(x, y).
kèo bóng đá c1 chức năng đầu vào và đầu ra thường không khó để viết,
pg_function_info_v1 (Complex_in);
Hàm đầu ra có thể chỉ là:
pg_function_info_v1 (Complex_out);
Bạn nên cẩn thận để thực hiện kèo bóng đá c1 chức năng đầu vào và đầu ra
Tùy chọn, loại do kèo bóng đá c1 có thể cung cấp đầu vào nhị phân vàphức tạp, chúng tôi sẽfloat8:
pg_function_info_v1 (Complex_Recv);
Một khi chúng tôi đã viết kèo bóng đá c1 hàm I/O và biên dịch chúng thành mộtphức tạpkèo bóng đá c1 trong SQL. Đầu tiên chúng tôi khai báo nó là kèo bóng đá c1 shell:
Tạo kèo bóng đá c1 phức tạp;
Điều này đóng vai trò là kèo bóng đá c1 giữ chỗ cho phép chúng tôi tham khảo
Tạo chức năng Complex_in (cString)FileName'FileName'FileName'FileName'
Cuối cùng, chúng tôi có thể cung cấp định nghĩa đầy đủ về dữ liệu
Tạo kèo bóng đá c1 phức tạp (
Khi bạn kèo bóng đá c1 loại cơ sở mới,PostgreSQLtự động cung cấp hỗ trợ cho_) Chuẩn bị.
Một khi kèo bóng đá c1 dữ liệu tồn tại, chúng ta có thể khai báo các chức năng bổ sung
Nếu kèo bóng đá c1 giá trị của kiểu dữ liệu của bạn khác nhau về kích thước (ở dạng bên trong),bánh mì nướng-able (xemPhần 58.2). Bạn nên làm điều này ngay cả khibánh mì nướngCan
Để làm điều này, biểu diễn nội bộ phải tuân theo tiêu chuẩnChar [4]Trường không bao giờ được truy cậpVL_LEN_).set_varsize ()
để lưu trữvarsize ()
Để lấy nó. kèo bóng đá c1 chức năng Cpg_detoast_datum
. (Chi tiết này thông thườngGetArg_Datatype_P
macros.) Sau đó, khi chạyTạo kèo bóng đá c1lệnh, chỉ định nội bộbiếnvà chọn
Nếu căn chỉnh là không quan trọng (chỉ dành cho một cụ thểpg_detoast_datum
. Bạn có thể sử dụngpg_detoast_datum_packed
Thay vào đó (thông thườngGetArg_Datatype_pp
Macro) và sử dụng macroVarsize_any_exhdr
vàVardata_any
Để truy cập một mốc dữ liệu có khả năng đóng gói.pg_detoast_datum
giao diện.
Lưu ý:Mã cũ thường xuyên tuyên bốVL_LEN_như mộtint32TrườngChar [4]. Điều này ổn miễn làINT32Căn chỉnh. Nhưng thật nguy hiểm khi sử dụng một
Để biết thêm chi tiết, hãy xem mô tả củaTạo kèo bóng đá c1lệnh.