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
Tài kèo bóng đá cúp c2 này dành cho phiên bản không được hỗ trợ của PostgreSQL.
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 37.PL/PGSQL - kèo bóng đá cúp c2kèo bóng đá cúp c2

PL/PGSQLlà một tải kèo bóng đá cúp c2 choPostgreSQLHệ thống cơ sở dữ kèo bóng đá cúp c2. Các mục tiêu thiết kế củaPL/PGSQLđã tạo ra một kèo bóng đá cúp c2 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ủ kèo bóng đá cúp c2,

  • 15959_15992kèo bóng đá cúp c2kèo bóng đá cúp c2 ngữ,

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

  • kế thừa tất cả các loại, chức năng do người dùng xác định người vận hành,

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

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

37.1. Tổng quan

ThePL/PGSQLTrình 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ânkèo bóng đá cúp c2Biểu thức vàkèo bóng đá cúp c2Cá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àkèo bóng đá cúp c2Lệ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).17437_17889PL/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đã làm 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ữ kèo bóng đá cúp c2. 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ữ kèo bóng đá cúp c2 của bạn. Vì ví dụ:

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

Nếu bạn thực thi chức năng trên, nó sẽ tham chiếu 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ạoFopulation ()hoặc ít nhất là bắt đầu một cơ sở dữ kèo bóng đá cúp c2 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 một hàm là"Thay thế", OID của nó không phải đã thay đổi).

PL/PGSQLLưu Các kế hoạch thực thi theo cách này, các lệnh kèo bóng đá cúp c2 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 kèo bóng đá cúp c2. Để 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âu lệnh được hỗ trợ bởi20403_20415Máy chủ. Các Máy chủ củathực thiCâu lệnh không thể được sử dụng trongPL/PGSQLCác chức năng (và không cần thiết).

Ngoại trừ các chức năng tính toán và chuyển đổi đầ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 kèo bóng đá cúp c2 ngữ cũng có thể được thực hiện vớiPL/PGSQL20861_21025

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

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

Điều đó có nghĩa là ứng dụng khách của bạn phải gửi mỗi Truy vấn đến máy chủ cơ sở dữ kèo bóng đá cúp c2, chờ nó được xử lý, nhận kết quả, thực hiện một số tính toán, sau đó gửi khác Truy vấn đến máy chủ. Tất cả điều này phát sinh giao tiếp và cũng có thể phát sinh chi phí mạng nếu máy khách đang ở trên một máy khác với cơ sở dữ kèo bóng đá cúp c2 máy chủ.

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 kèo bóng đá cúp c2 và dễ sử dụng SQL, 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 kèo bóng đá cúp c2.

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

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ữ kèo bóng đá cúp c2 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ạiRecord, có nghĩa là kết quả là một loại hàng có cột được xác định theo đặc điểm kỹ thuật trong Truy vấn gọi, như đã thảo luận trongPhầ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ữ kèo bóng đá cúp c2 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 33.2.5. Một ví dụ được hiển thị trongPhần 37.4.1.

PL/PGSQLchức năng có thể Cũng được tuyên bố trả lại"SET"24126_24257Return 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.