Có gì trong mysql?

Một thủ tục (thường được gọi là thủ tục lưu trữ) là một tập hợp các câu lệnh SQL được biên dịch trước được lưu trữ bên trong cơ sở dữ liệu. Nó là chương trình con hoặc chương trình con trong ngôn ngữ điện toán thông thường. Một thủ tục luôn chứa tên, danh sách tham số và câu lệnh SQL. Chúng ta có thể gọi các thủ tục bằng cách sử dụng trình kích hoạt, các thủ tục và ứng dụng khác như Java, Python, PHP, v.v. Nó được giới thiệu lần đầu trong MySQL phiên bản 5. Hiện tại, nó có thể được hỗ trợ bởi hầu hết các hệ thống cơ sở dữ liệu quan hệ

Nếu chúng tôi xem xét ứng dụng doanh nghiệp, chúng tôi luôn cần thực hiện các tác vụ cụ thể như dọn dẹp cơ sở dữ liệu, xử lý bảng lương, v.v. trên cơ sở dữ liệu thường xuyên. Các tác vụ như vậy liên quan đến nhiều câu lệnh SQL để thực hiện từng tác vụ. Quá trình này có thể dễ dàng nếu chúng ta nhóm các nhiệm vụ này thành một nhiệm vụ duy nhất. Chúng tôi có thể đáp ứng yêu cầu này trong MySQL bằng cách tạo một thủ tục được lưu trữ trong cơ sở dữ liệu của chúng tôi

Một thủ tục được gọi là thủ tục lưu trữ đệ quy khi nó gọi chính nó. Hầu hết các hệ thống cơ sở dữ liệu đều hỗ trợ các thủ tục lưu trữ đệ quy. Nhưng, nó không được hỗ trợ tốt trong MySQL

Các tính năng của thủ tục lưu trữ

  • Thủ tục lưu trữ tăng hiệu suất của các ứng dụng. Sau khi thủ tục lưu trữ được tạo, chúng được biên dịch và lưu trữ trong cơ sở dữ liệu
  • Thủ tục được lưu trữ làm giảm lưu lượng giữa ứng dụng và máy chủ cơ sở dữ liệu. Bởi vì ứng dụng chỉ phải gửi tên và tham số của thủ tục được lưu trữ thay vì gửi nhiều câu lệnh SQL
  • Các thủ tục được lưu trữ có thể tái sử dụng và trong suốt đối với bất kỳ ứng dụng nào
  • Một thủ tục luôn luôn an toàn. Quản trị viên cơ sở dữ liệu có thể cấp quyền cho các ứng dụng truy cập các thủ tục được lưu trữ trong cơ sở dữ liệu mà không cần cấp bất kỳ quyền nào trên bảng cơ sở dữ liệu

Làm thế nào để tạo ra một thủ tục?

Cú pháp sau đây được sử dụng để tạo thủ tục lưu trữ trong MySQL. Nó có thể trả về một hoặc nhiều giá trị thông qua các tham số hoặc đôi khi có thể không trả về chút nào. Theo mặc định, một thủ tục được liên kết với cơ sở dữ liệu hiện tại của chúng tôi. Nhưng chúng ta cũng có thể tạo nó thành một cơ sở dữ liệu khác từ cơ sở dữ liệu hiện tại bằng cách chỉ định tên là database_name. tên thủ tục. Xem cú pháp hoàn chỉnh

Giải thích thông số

Cú pháp thủ tục có các tham số sau

Tham số NameDescriptionsprocedure_nameNó đại diện cho tên của thủ tục được lưu trữ. tham sốNó đại diện cho số lượng tham số. Nó có thể là một hoặc nhiều hơn một. Statement_sectionNó đại diện cho các khai báo của tất cả các biến. Executable_sectionNó đại diện cho mã để thực thi chức năng

Tham số thủ tục MySQL có một trong ba chế độ

tham số TRONG

Đó là chế độ mặc định. Nó nhận một tham số làm đầu vào, chẳng hạn như một thuộc tính. Khi chúng ta định nghĩa nó, chương trình gọi phải truyền một đối số cho thủ tục lưu sẵn. Giá trị của tham số này luôn được bảo vệ

tham số RA

Nó được sử dụng để truyền tham số làm đầu ra. Giá trị của nó có thể được thay đổi bên trong thủ tục được lưu trữ và giá trị (mới) đã thay đổi được chuyển trở lại chương trình gọi. Cần lưu ý rằng một thủ tục không thể truy cập giá trị ban đầu của tham số OUT khi nó bắt đầu

INOUT tham số

Nó là sự kết hợp của các tham số IN và OUT. Điều đó có nghĩa là chương trình gọi có thể chuyển đối số và thủ tục có thể sửa đổi tham số INOUT, sau đó chuyển giá trị mới trở lại chương trình gọi

Làm thế nào để gọi một thủ tục được lưu trữ?

Chúng ta có thể sử dụng câu lệnh CALL để gọi thủ tục lưu sẵn. Câu lệnh này trả về các giá trị cho người gọi nó thông qua các tham số của nó (IN, OUT hoặc INOUT). Cú pháp sau đây được sử dụng để gọi thủ tục được lưu trữ trong MySQL

Ví dụ

Hãy để chúng tôi hiểu cách tạo một thủ tục trong MySQL thông qua ví dụ. Đầu tiên, chúng ta cần chọn cơ sở dữ liệu sẽ lưu trữ thủ tục vừa tạo. Chúng ta có thể chọn cơ sở dữ liệu bằng cách sử dụng câu lệnh dưới đây

Giả sử cơ sở dữ liệu này có một bảng có tên student_info chứa dữ liệu sau

Có gì trong mysql?

Thủ tục không có tham số

Giả sử chúng tôi muốn hiển thị tất cả các bản ghi của bảng này có điểm lớn hơn 70 và đếm tất cả các hàng của bảng. Đoạn mã sau tạo một thủ tục có tên get_merit_students

Nếu mã này được thực thi thành công, chúng tôi sẽ nhận được đầu ra bên dưới

Có gì trong mysql?

Hãy để chúng tôi gọi thủ tục để xác minh đầu ra

Nó sẽ cho đầu ra như sau

Có gì trong mysql?

Thủ tục với tham số IN

Trong quy trình này, chúng tôi đã sử dụng tham số IN là 'var1' của loại số nguyên để chấp nhận một số từ người dùng. Phần thân của nó tìm nạp các bản ghi từ bảng bằng cách sử dụng câu lệnh SELECT và chỉ trả về những hàng sẽ được cung cấp bởi người dùng. Nó cũng trả về tổng số hàng của bảng đã chỉ định. Xem mã thủ tục

Sau khi thực hiện thành công, chúng ta có thể gọi thủ tục như sau

Chúng tôi sẽ nhận được đầu ra dưới đây

Có gì trong mysql?

Thủ tục với tham số OUT

Trong quy trình này, chúng tôi đã sử dụng tham số OUT làm 'dấu cao nhất' của kiểu số nguyên. Phần cơ thể của nó tìm nạp các điểm tối đa từ bảng bằng hàm MAX(). Xem mã thủ tục

Tham số của thủ tục này sẽ nhận được điểm cao nhất từ ​​bảng student_info. Khi chúng ta gọi thủ tục, tham số OUT báo cho các hệ thống cơ sở dữ liệu biết giá trị của nó đi ra khỏi thủ tục. Bây giờ, chúng ta sẽ chuyển giá trị của nó cho một biến phiên @M trong câu lệnh CALL như sau

Đây là đầu ra

Có gì trong mysql?

Thủ tục với tham số INOUT

Trong quy trình này, chúng tôi đã sử dụng tham số INOUT là 'var1' của kiểu số nguyên. Đầu tiên, phần thân của nó lấy các dấu từ bảng với id đã chỉ định và sau đó lưu nó vào cùng một biến var1. Đầu tiên var1 đóng vai trò là tham số IN và sau đó là tham số OUT. Do đó, chúng ta có thể gọi nó là chế độ tham số INOUT. Xem mã thủ tục

Sau khi thực hiện thành công, chúng ta có thể gọi thủ tục như sau

Chúng tôi sẽ nhận được đầu ra dưới đây

Có gì trong mysql?

Làm cách nào để hiển thị hoặc liệt kê các thủ tục được lưu trữ trong MySQL?

Khi chúng tôi có một số thủ tục trong máy chủ MySQL, điều rất quan trọng là liệt kê tất cả các thủ tục. Đó là bởi vì đôi khi tên thủ tục giống nhau trong nhiều cơ sở dữ liệu. Trong trường hợp đó, truy vấn này rất hữu ích. Chúng ta có thể liệt kê tất cả các thủ tục được lưu trữ trên máy chủ MySQL hiện tại như sau

Câu lệnh này hiển thị tất cả các tên thủ tục được lưu trữ, bao gồm các đặc điểm của chúng. Nếu chúng ta muốn hiển thị các thủ tục trong một cơ sở dữ liệu cụ thể, chúng ta cần sử dụng mệnh đề WHERE. Trong trường hợp muốn liệt kê các thủ tục lưu trữ với một từ cụ thể, chúng ta cần sử dụng mệnh đề LIKE

Chúng tôi có thể liệt kê tất cả các thủ tục được lưu trữ trong cơ sở dữ liệu MySQL mystudentsb bằng cách sử dụng câu lệnh dưới đây

Nó sẽ cung cấp đầu ra bên dưới nơi chúng ta có thể thấy rằng cơ sở dữ liệu mystudentdb chứa bốn thủ tục được lưu trữ

Có gì trong mysql?

Làm cách nào để xóa/xóa các thủ tục được lưu trữ trong MySQL?

MySQL cũng cho phép một lệnh bỏ thủ tục. Khi thủ tục bị hủy, nó cũng bị xóa khỏi máy chủ cơ sở dữ liệu. Câu lệnh sau đây được sử dụng để loại bỏ một thủ tục được lưu trữ trong MySQL

Giả sử chúng ta muốn xóa thủ tục có tên display_marks khỏi cơ sở dữ liệu mystudentdb. Chúng ta có thể làm điều này bằng cách chọn cơ sở dữ liệu đầu tiên và sau đó sử dụng cú pháp như sau để loại bỏ thủ tục

Chúng ta có thể xác minh nó bằng cách liệt kê thủ tục trong cơ sở dữ liệu đã chỉ định bằng cách sử dụng lệnh SHOW PROCEDURE STATUS. Xem đầu ra bên dưới

Có gì trong mysql?

Làm cách nào để tạo một thủ tục trong bàn làm việc của MySQL?

Trước tiên, chúng tôi khởi chạy công cụ và đăng nhập bằng tên người dùng và mật khẩu để tạo quy trình trong MySQL Workbench. Bây giờ, chúng ta cần thực hiện các bước sau để tạo thủ tục lưu trữ

1. Chuyển đến tab Điều hướng và nhấp vào menu Lược đồ nơi có sẵn tất cả các cơ sở dữ liệu đã tạo trước đó. Chọn cơ sở dữ liệu mong muốn của bạn (ví dụ: employeedb). Nó sẽ bật lên các tùy chọn sau

Có gì trong mysql?

2. Click chuột phải vào Stored Procedure, ta sẽ được mã thủ tục mặc định. Xem màn hình bên dưới

Có gì trong mysql?

3. Hoàn thành mã thủ tục và nhấp vào nút Áp dụng. Trong cửa sổ tiếp theo, chúng tôi sẽ xem lại mã quy trình một lần nữa và nếu không tìm thấy lỗi nào, hãy nhấp vào nút Áp dụng

Có gì trong mysql?

4. Sau khi click vào nút Apply, click vào nút Finish để hoàn thành

Có gì trong mysql?

5. Chúng tôi có thể điều hướng lại menu lược đồ để xác minh quy trình mới được tạo này. Điều đó có nghĩa là trước tiên hãy chọn cơ sở dữ liệu của bạn và mở rộng nó để hiển thị menu phụ của nó. Trong menu phụ, mở rộng tùy chọn thủ tục được lưu trữ sẽ hiển thị thủ tục mới được tạo. Xem hình ảnh bên dưới

Có gì trong mysql?

6. Chúng ta có thể gọi thủ tục bằng cách nhấn vào ô hình chữ nhật màu đỏ hoặc chỉ cần thực hiện câu lệnh CALL

Có gì trong mysql?

Làm cách nào để thay đổi quy trình trong MySQL?

MySQL không cho phép bất kỳ lệnh nào thay đổi thủ tục trong MySQL. Tuy nhiên, nó cung cấp một lệnh được sử dụng để thay đổi các đặc điểm của thủ tục được lưu trữ. Lệnh này có thể thay đổi nhiều hơn một thay đổi trong thủ tục nhưng không sửa đổi các tham số hoặc nội dung của thủ tục được lưu trữ. Nếu chúng ta muốn thực hiện những thay đổi như vậy, chúng ta phải loại bỏ và tạo lại thủ tục bằng cách sử dụng câu lệnh DROP PROCEDURE và CREATE PROCEDURE

Câu lệnh dưới đây được sử dụng để thay đổi các đặc điểm của thủ tục nhưng không phải là thủ tục thực tế

Giả sử chúng tôi muốn thêm nhận xét vào thủ tục hiện có. Trong trường hợp như vậy, chúng ta có thể sử dụng câu lệnh ALTER như sau để thực hiện nhiệm vụ này

Sau khi thực hiện câu lệnh này, chúng ta có thể xác minh nó bằng cách sử dụng câu lệnh bên dưới

Nó sẽ hiển thị đầu ra bên dưới nơi chúng ta có thể thấy rằng bình luận đã được thêm thành công

Có gì trong mysql?

Cần lưu ý rằng chúng ta có thể thay đổi phần thân của thủ tục được lưu trữ trong MySQL bằng công cụ bàn làm việc. Vì vậy, hãy mở công cụ này, điều hướng đến menu lược đồ và mở rộng cơ sở dữ liệu chứa các thủ tục được lưu trữ. Bây giờ, hãy chọn thủ tục của bạn, nhấp chuột phải vào thủ tục đó và chọn tùy chọn THAY ĐỔI THỦ TỤC LƯU TRỮ. Xem màn hình bên dưới

Có gì trong mysql?

Sau khi nhấp vào tùy chọn này, chúng tôi sẽ nhận được một cửa sổ chứa mã thủ tục. Xem màn hình bên dưới có chứa mã thủ tục để hiển thị tất cả nhân viên

Có gì trong mysql?

Bây giờ, chúng tôi sẽ sửa đổi mã này. Giả sử chúng tôi chỉ muốn hiển thị nhân viên nam. Để làm điều này, chúng ta có thể thay đổi mã này từ mã bên dưới và nhấp vào nút Áp dụng

Có gì trong mysql?

Tại cửa sổ này, chúng ta sẽ xem lại mã quy trình một lần nữa, nếu không tìm thấy lỗi nào, hãy nhấp vào nút Áp dụng -> Áp dụng -> Kết thúc để hoàn tất quy trình

Vào ra trong SQL là gì?

Tham số IN OUT truyền giá trị ban đầu cho chương trình con và trả về giá trị cập nhật cho trình gọi . Nó có thể được gán một giá trị và giá trị có thể được đọc. Tham số thực tế tương ứng với một tham số hình thức IN OUT phải là một biến, không phải là một hằng số hoặc một biểu thức.

In Out và Inout trong MySQL là gì?

IN, OUT và INOUT là các đối số được truyền cho các thủ tục . - IN là đối số 'chỉ đọc' và phải được khởi tạo. - OUT là một đối số chưa được khởi tạo phải được khởi tạo bởi một hàm.

Đâu là sự khác biệt giữa outvà inout?

While tham số OUT là tham số có giá trị được cung cấp bởi câu lệnh SQL mà nó trả về . Bạn truy xuất các giá trị từ các tham số OUT bằng cách gọi các phương thức getXXX(), tùy thuộc vào loại dữ liệu. Mặt khác, tham số INOUT là tham số cung cấp cả giá trị đầu vào và đầu ra.

Những gì vào và ra trong thủ tục được lưu trữ?

Tham số đầu vào/đầu ra là một tham số có chức năng như một tham số IN hoặc OUT hoặc cả hai. Giá trị của tham số IN/OUT được truyền vào thủ tục/hàm được lưu trữ và một giá trị mới có thể được gán cho tham số và được truyền ra khỏi mô-đun. Tham số IN/OUT phải là một biến, không phải là một hằng số