12/08/2018, 14:05

PL/pgSQL - SQL Procedural Language

PL/pgSQL là một loadable procedural language cho PostgreSQL database system. Những điểm sáng của PL/pgSQL khi được tạo ra một loadable procedural language là: có thể sử dụng để tạo ra các function và trigger Thêm vào các cấu trúc điểu khiển trong SQL language Có thể thể hiện được những tính ...

PL/pgSQL là một loadable procedural language cho PostgreSQL database system. Những điểm sáng của PL/pgSQL khi được tạo ra một loadable procedural language là:

  • có thể sử dụng để tạo ra các function và trigger
  • Thêm vào các cấu trúc điểu khiển trong SQL language
  • Có thể thể hiện được những tính toán phức tạp
  • Có thể kế thừa từ mọi kiểu mà người dùng định nghĩa, các hàm, các phép toán.
  • Có thể định nghĩa trusted bởi serve
  • Dễ dàng để sử dụng

Những function được tạo ra bằng PL/pgSQL có thể sử dụng ở mọi nơi. ví dụ, Nó có thể thể hiện các tính toán phức tạp kèm theo điều kiện tính toán và sau đó, sử dụng chúng để định nghĩa các phép toán khác hoặc sử dụng chúng trong các phép tính index.

Trong PostgreSQL 9.0 và các phiên bản gần đây, PL/pgSQL đưuọc cài đặt như là mặc định , tuy nhiên, nó vẫn là một loadable module , nên vì lý do đặc biệt về bảo mật nào đó, thì admin có thể lựa chọn xóa bỏ chúng.

Lợi thế của việc sử dụng PL/pgSQL

  • SQL trong PostgreSQL cũng giống như đa phần các cơ sở dữ liệu quan hệ sử dụng truy vấn khác. Đó là di động và dễ dàng để tìm hiểu. Tuy nhiên, mỗi câu lệnh SQL phải được thực hiện riêng rẽ bởi các server.Điều đó có nghĩa là client của bạn phải gửi cho mỗi truy vấn đến máy chủ cơ sở dữ liệu, chờ cho nó để được xử lý, tiếp nhận và xử lý kết quả, làm một số tính toán, sau đó gửi các truy vấn thêm để các máy chủ. Tất cả điều này phải chịu chi phí mạng nếu khách hàng của bạn là trên một máy tính khác nhau hơn so với các máy chủ cơ sở dữ liệu.

Với PL / pgSQL bạn có thể nhóm một khối lượng tính toán và một loạt các truy vấn bên trong các máy chủ cơ sở dữ liệu, do đó có sức mạnh của một ngôn ngữ thủ tục và dễ sử dụng của SQL, với chi phí tiết kiệm của mô hình client-server

  • Các thông tin vòng, lặp giữa client-server được loại bỏ.
  • Các kết quả trung gian mà khách hàng không cần không cần phải đưa vào hoặc chuyển giữa máy chủ và máy khách
  • Tránh được nhiều vòng phên.

Những điều trên có thể dẫn đến một sự gia tăng hiệu suất đáng kể so với một ứng dụng không sử dụng được lưu trữ functions.Vì vậy, với PL / pgSQL bạn có thể sử dụng tất cả các loại dữ liệu, vận hành và chức năng của SQL.

Hỗ trợ các tham số và Kiểu dữ liệu trả về

  • Các hàm được viết trong PL/pgSQL có thể cheo phép các tham số, hoặc bất kỳ một mảng dữ liệu nào được hỗ trợ bởi server, và chúng cũng có thể trả về một kết qủa có kiểu của chúng. CHúng đồng ý kết qủa trả về có thể là bất kỳ kiểu trả về nào được định nghĩa theo tên. Diều này có thể khải báo một PL/pgSQL function và kết qủa trả về là một record, điều đó cũng có nghĩa kết qủa trả về là một row type với những cột của nó được gọi bởi câu query.
  • PL/pgSQL functions có thể khai báo các biết là số hoặc các tham số kiểu VARIADIC marker. Nó làm việc chính xác giống như SQL functions
  • PL/pgSQL fnction có thể khai báo kiểu trả về là bất cứ kiểu nào khả dụng được hỗ trợ bở server. Các kiểu tự nhiên(int, boolean...) được gọi từ một hàm đa hình, có thể được gọi như gọi một hàm thông thường.
  • PL/pgSQL có thể trả về một set hoặc trigger, table, query .v.v là những đối tượng của databases.
  • Cuối cùng, một PL/pgSQL function có thể khai báo kiểu trả về là void và không có dữ liệu trả về.

Cấu trúc của PL/pgSQL

  • PL/pgSQL là một ngôn ngữ có cấu trúc. Dể hoàn thành một định nghĩa một function, nó phải trong một khối lện. Một block (khối lệnh) được định nghĩa như sau:
    [ <<label>> ]
    [ DECLARE
        declarations ]
    BEGIN
        statements
    END [ label ];

Với mỗi khai báo và mỗi câ lệnh bên trong khối lệnh, phải được kết thúc bởi dấu chấm phẩy (            </div>
            
            <div class=

0