THỦ TỤC TRONG SQL LÀ GÌ

  -  

Trong nội dung bài viết lần này họ đang bên nhau tò mò hàm, thủ tục cùng trigger vào SQL Server là đồ vật gi cùng được sử dụng thế nào và cùng xem thử bọn chúng bao gồm kinh hãi, nguy khốn cùng cao niên tựa như các gì các fan thường suy nghĩ hay là không

*

(Những ví dụ trong bài viết dựa vào cơ sở tài liệu sakila - https://dev.mysql.com/doc/sakila/en/sakila-installation.html)

Stored procedure (Thủ tục)

Stored procedure là cái gì?

Là đoạn chương trình kịch bản (programming scripts) với các câu lệnh Squốc lộ nhúng (embedded SQL) được giữ dưới dạng đã có được biên dịch và thi hành thực tiếp bởi MySquốc lộ hệ thống,

SPhường. cho phép tàng trữ những xúc tích và ngắn gọn ứng dụng bên trên DataBase. khi Gọi SPhường lần trước tiên, MySquốc lộ sẽ tạo một lịch thực thi cùng lưu trữ nó vào bộ nhớ đệm. Tại đầy đủ lần Điện thoại tư vấn hàm tiếp theo sau, MySquốc lộ sử dụng sử dựng lại định kỳ thực thi được lưu cực kỳ nkhô hanh với hiệu xuất đáng tin cậy.

Bạn đang xem: Thủ tục trong sql là gì

SPhường là một trong mã Squốc lộ vẫn chuẩn bị sẵn mà lại chúng ta cũng có thể lưu giữ, vì thế đoạn mã có thể được áp dụng lại nhiều lần.

Vì vậy, nếu bạn gồm một truy vấn SQL nhưng bạn viết đi viết lại những lần, hãy lưu nó dưới dạng một thủ tục được lưu trữ, kế tiếp chỉ việc call nó để tiến hành nó.

Cũng có thể chuyển những tmê mệt số cho 1 giấy tờ thủ tục được tàng trữ, để giấy tờ thủ tục được lưu trữ rất có thể chuyển động dựa vào (các) giá trị tsi số được truyền vào.

Vì sao nên cần sử dụng Stored procedure

Giảm dư thừa mã cmùi hương trình: Các đoạn mã tựa như trong các ứng dụng nlỗi thêm, cập nhật có thể giữ ngơi nghỉ phía CSDL

Cải thiện tại tốc độ xúc tiến câu lệnh SSQL

Bảo trì: Nếu có sự thay đổi trong CSDL, mã lệnh nên chuyển đổi có thể khẳng định trong số SP

An ninc cơ sở dữ liệu tốt hơn: Trong các ứng dụng bình an cao, cùng với SPhường có thể kiểm soát và điều hành truy vấn dữ liệu cùng đưa ra các hình thức bình yên tập trung.

Nhược điểm của Stored procedure

Thiếu tính khả đưa (Lack of Portability)SPhường. khó gửi từ một DBMS sang một DBMS khác. Yêu cầu thiết kế với kiểm demo lại xứng đáng kểSQLServer: T-SQLOracle: PL-SQLTải DB ServerSử dụng SPhường. các hoàn toàn có thể tạo vượt download MySquốc lộ VPS (SQL Server phải tàng trữ rất nhiều kế hoạc thực thi)Hạn chế ngôn ngữ lập trìnhLập trình SP. ko nhiều mẫu mã như các nền tảng gốc rễ cải tiến và phát triển khác ví như Java giỏi PHPLưu ý: Các phiên bạn dạng sau này của MySquốc lộ hoàn toàn có thể hỗ trợ các hình ảnh cho phép tạo ra những SPhường. sử dụng những ngôn từ bên ngoài, ví dụ Java

Sử dụng Stored Procedure khi?

Thực hiện hầu hết phxay toán phức tạp, lặp lại các lầnProject yên cầu nghiêm ngặt về vận tốc thực thi . Stored Procedure đến vận tốc xúc tiến nhanh hao hơn đối với những câu lệnh Squốc lộ Server thông thường vì chưng Stored Procedure đã có được lưu lại sẵn tại Squốc lộ hệ thống, do vậy nó chỉ việc Gọi một chiếc lệnh để thực hiện Stored Procedure, vấn đề này giúp tăng vận tốc triển khai.Trong quy trình chế tạo ra Stored Procedure, SQL Server sẽ buổi tối ưu hóa hầu hết dòng lệnh này, điều này hỗ trợ cho tốc độ tiến hành cao hơn câu lệnh Squốc lộ thường thì không hề ít.

Xem thêm: Giới Hạn Chảy Tiếng Anh Là Gì ? Giới Hạn Chảy Tiếng Anh Là Gì

Không yêu cầu áp dụng Stored Procedure khi?

Store Procedured có tác dụng quy trình debug trở đề nghị khó khăn rộng.

Vì vậy hãy nghĩ đến Stored Procedure như thể phương án cuối cùng nhằm về tối ưu hóa tốc độ triển khai lịch trình.Các project gồm kích thước nhỏ dại và vừa cần ưu tiên thực hiện những thư viện ORM (Object Relation Mapping), như Entity Framework cho C#, TypeORM cho NodeJs.

Sự không giống nhau của Thủ tục, Hàm

Thủ tục (PROCEDURE)Hàm (FUNCTION)
Cách gọiCALLSử dụng các câu lệnh trong sql nlỗi SELECT, UPDATE
Giá trị trả vềcũng có thể một hoặc nhiều công dụng SELECT với các tmê say số outTrả về một quý hiếm tuyệt nhất trải qua RETURN
Các tmê mẩn sốGiá trị (input) cùng tmê man chiếu (output) Các tham mê số (IN, OUT, INOUT)Chỉ các giá trị tham số vào (input). Không cần các thẻ nlỗi IN..
điện thoại tư vấn thủ tục/hàmCó thể gọi các thủ tục với hàm khácChỉ hoàn toàn có thể điện thoại tư vấn những hàm khác

Cú pháp tạo Thủ tục/Hàm

CREATE FUNCTION name () RETURNS datatype sqlcode

CREATE PROCEDURE name () sqlcode

Ví dụ

Tạo một giấy tờ thủ tục tên uspActorList trả về danh sách first_name, last_name của những actor sắp xếp theo first_name

CREATE PROCEDURE uspActorListASBEGIN SELECT first_name, last_price FROM actor ORDER BY first_name;END;Tạo một giấy tờ thủ tục tên uspActorList bao gồm tmê man số đầu vào là max_id trả về list first_name, last_name của các actor sắp xếp theo first_name cùng gồm id CREATE PROCEDURE actorList(IN max_id INT)ASBEGIN SELECT first_name, last_price FROM actor WHERE actor_id Tạo một function tên film_in_stoông xã trả về con số với đầu vào (IN) là p_film_id, p_store_id, đầu ra (OUT) là p_film_count

CREATE PROCEDURE film_in_stock(IN p_film_id INT, IN p_store_id INT, OUT p_film_count INT)READS Squốc lộ DATABEGIN SELECT inventory_id FROM inventory WHERE film_id = p_film_id AND store_id = p_store_id AND inventory_in_stock(inventory_id); SELECT FOUND_ROWS() INTO p_film_count;END $$

Các câu lệnh khác

DELIMITER $$Thường được sử dụng Lúc xác định những hàm, giấy tờ thủ tục với trình kích hoạt (trong những số đó chúng ta phải thực hiện nhiều câu lệnh). Dấu $$ được áp dụng nhằm khẳng định phần đầu của toàn cục giấy tờ thủ tục, phía bên trong những câu lệnh đơn nhất được chấm dứt vày ;. Bằng cách đó, Khi mã được chạy trong thứ khách mysql, sản phẩm khách hàng có thể cho thấy chỗ cục bộ giấy tờ thủ tục hoàn thành cùng triển khai nó nlỗi một đơn vị cầm cố bởi xúc tiến các câu lệnh cô quạnh phía bên trong.

Xem thêm: Các Quy Định Của Pháp Luật Về Địa Giới Hành Chính Là Gì ? Khái Niệm Về Địa Giới Hành Chính

Lưu ý rằng từ bỏ khóa DELIMITER chỉ là một tác dụng của command line mysql client (và một vài vật dụng khách khác) với không hẳn là 1 trong những cấu tạo của SQL thường thì. Nó sẽ không còn hoạt động trường hợp chuyển nó qua 1 API ngôn ngữ xây dựng cho MySQL. Một số áp dụng khách khác ví như PHPMyAdmin có những cách tiến hành không giống nhằm chỉ định vết ngăn cách ko mặc định.