Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
9730_9801
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

Chương 35.PL/PGSQL - cách đọc kèo bóng đácách đọc kèo bóng đá

PL/PGSQLlà một tải cách đọc kèo bóng đá choPostgreSQLHệ thống cơ sở dữ cách đọc kèo bóng đá. Các mục tiêu thiết kế củaPL/PGSQLđã tạo ra một cách đọc kèo bóng đá có thể tải được

  • có thể được sử dụng để tạo các chức năng và kích hoạt thủ cách đọc kèo bóng đá,

  • Thêm cấu trúc điều khiển vàocách đọc kèo bóng đácách đọc kèo bóng đá ngữ,

  • Có thể thực hiện các tính toán phức tạp,

  • 16412_16478

  • có thể được xác định để được máy chủ tin cậy,

  • rất dễ sử dụng.

Ngoại trừ các chức năng chuyển đổi và đầu ra đầu vào/đầu ra Đối với các loại do người dùng xác định, bất cứ điều gì có thể được xác định trong c Các chức năng cách đọc kèo bóng đá ngữ cũng có thể được thực hiện vớiPL/PGSQL. Ví dụ, có thể Tạo các chức năng tính toán có điều kiện phức tạp và sử dụng sau này chúng để xác định các toán tử hoặc sử dụng chúng trong các biểu thức chỉ mục.

35.1. Tổng quan

ThePL/PGSQLngười xử lý gọi Phân tích văn bản nguồn của chức năng và tạo ra một nội bộ cây hướng dẫn nhị phân lần đầu tiên hàm được gọi (trong mỗi phiên). Cây hướng dẫn dịch hoàn toàn ThePL/PGSQLTuyên bố cấu trúc, nhưng cá nhâncách đọc kèo bóng đáBiểu thức vàcách đọc kèo bóng đáCác lệnh được sử dụng trong hàm không được dịch ngay lập tức.

như mỗi biểu thức vàcách đọc kèo bóng đáLệnh được sử dụng đầu tiên trong chức năng, ThePL/PGSQLThông dịch viên Tạo một kế hoạch thực thi đã chuẩn bị (sử dụngSPINgười quản lýspi_preparespi_saveplanchức năng).Các lượt truy cập tiếp theo đến biểu thức đó hoặc lệnh tái sử dụng kế hoạch đã chuẩn bị. Do đó, một chức năng với mã có điều kiện chứa nhiều câu lệnh Các kế hoạch thực thi có thể được yêu cầu sẽ chỉ chuẩn bị và tiết kiệm những kế hoạch thực sự được sử dụng trong suốt cuộc đời của Kết nối cơ sở dữ cách đọc kèo bóng đá. Điều này có thể giảm đáng kể tổng số Lượng thời gian cần thiết để phân tích và tạo các kế hoạch thực thi cho các câu trong mộtPL/PGSQLHàm. Một bất lợi là Các lỗi trong một biểu thức hoặc lệnh cụ thể có thể không được phát hiện Cho đến khi phần đó của chức năng đạt được khi thực hiện.

một lầnPL/PGSQLđã thực hiện một kế hoạch thực thi cho một lệnh cụ thể trong một hàm, nó sẽ Tái sử dụng kế hoạch đó cho cuộc sống của kết nối cơ sở dữ cách đọc kèo bóng đá. Cái này thường là một chiến thắng cho hiệu suất, nhưng nó có thể gây ra một số Vấn đề nếu bạn tự động thay đổi lược đồ cơ sở dữ cách đọc kèo bóng đá của bạn. Vì ví dụ:

Tạo hàm Fopulation () trả về số nguyên dưới dạng $$
TUYÊN BỐ
    - Tuyên bố
BẮT ĐẦU
    Thực hiện my_function ();
KẾT THÚC;
$$ cách đọc kèo bóng đá ngữ plpgsql;

Nếu bạn thực thi chức năng trên, nó sẽ tham khảo OID vìmy_function ()Trong Kế hoạch thực thi được sản xuất chobiểu diễnTuyên bố. Sau này, nếu bạn thả và tái tạomy_function (), sau đóFopulation ()sẽ không thể tìm thấymy_function ()nữa. Bạn sau đó sẽ phải tái tạođông dân ()hoặc ít nhất là bắt đầu một cơ sở dữ cách đọc kèo bóng đá mới Phiên để nó sẽ được biên dịch lại. Một cách khác để Tránh vấn đề này là sử dụngTạo hoặc Thay thế chức năngKhi cập nhật định nghĩa củamy_function(Khi hàm là"Thay thế", OID của nó không phải là đã thay đổi).

PL/PGSQLLưu Các kế hoạch thực thi theo cách này, các lệnh cách đọc kèo bóng đá xuất hiện trực tiếp trong aPL/PGSQLHàm phải Tham khảo cùng một bảng và cột trên mỗi lần thực thi; cái đó là, bạn không thể sử dụng một tham số làm tên của bảng hoặc cột trong một lệnh cách đọc kèo bóng đá. Để vượt qua hạn chế này, bạn có thể Xây dựng các lệnh động bằng cách sử dụngPL/PGSQL thực thiTuyên bố - với giá xây dựng kế hoạch thực hiện mới Trên mỗi lần thực thi.

Lưu ý:ThePL/PGSQL thực thiCâu lệnh không liên quan đếnthực thicách đọc kèo bóng đá câu lệnh được hỗ trợ bởiPostgreSQLMáy chủ. Máy chủthực thiTuyên bố không thể được sử dụng ở trongPL/PGSQLchức năng (và không cần thiết).

35.1.1. Ưu điểm của việc sử dụngPL/PGSQL

cách đọc kèo bóng đálà cách đọc kèo bóng đá ngữPostgreSQLvà hầu hết khác Cơ sở dữ liệu quan hệ sử dụng làm cách đọc kèo bóng đá ngữ truy vấn. Nó có thể di động và dễ học. Nhưng mọicách đọc kèo bóng đáCâu lệnh phải được thực thi riêng lẻ bởi máy chủ cơ sở dữ cách đọc kèo bóng đá.

21866_22244

vớiPL/PGSQLBạn có thể Nhóm một khối tính toán và một loạt các truy vấnBên trongCơ sở dữ liệu máy chủ, do đó có sức mạnh của một ngôn ngữ thủ tục và dễ sử dụng cách đọc kèo bóng đá, nhưng tiết kiệm nhiều thời gian vì bạn Không có toàn bộ chi phí giao tiếp máy khách/máy chủ. Điều này có thể làm cho một sự gia tăng hiệu suất đáng kể.

Ngoài ra, vớiPL/PGSQLBạn có thể sử dụng tất cả các loại dữ liệu, toán tử và các chức năng của cách đọc kèo bóng đá.

35.1.2. Đối số được hỗ trợ và kết quả Kiểu dữ cách đọc kèo bóng đá

Các chức năng được viết bằngPL/PGSQLcó thể chấp nhận làm đối số bất kỳ Kiểu dữ cách đọc kèo bóng đá vô hướng hoặc mảng được máy chủ hỗ trợ và chúng có thể trả về kết quả của bất kỳ loại nào trong số này. Họ cũng có thể chấp nhận hoặc trả về bất kỳ loại tổng hợp (loại hàng) được chỉ định bởi tên. Nó cũng có thể khai báo mộtPL/PGSQLchức năng trở lạiRecord23484_23626Phần 7.2.1.4.

PL/PGSQLCác chức năng có thể Cũng được tuyên bố chấp nhận và trả lại các loại đa hìnhAnyEuityAnyArray. Các loại dữ cách đọc kèo bóng đá thực tế được xử lý bởi một Chức năng đa hình có thể thay đổi từ cuộc gọi đến cuộc gọi, như đã thảo luận TRONGPhần 31.2.5. Một ví dụ được hiển thị trongPhần 35.4.1.

PL/PGSQLCác chức năng có thể Cũng được tuyên bố trả lại"SET"hoặc bảng, của bất kỳ loại dữ cách đọc kèo bóng đá nào họ có thể Trả về một thể hiện duy nhất của. Một chức năng như vậy tạo ra nó đầu ra bằng cách thực thiReturn Nextcho từng phần tử mong muốn của tập kết quả.

Cuối cùng, APL/PGSQLHàm có thể được tuyên bố trả lạivoidNếu nó không có giá trị trả về hữu ích.

PL/PGSQL24854_25159PL/PGSQL25205_25250