Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Trong bài viết này, chúng tôi sẽ tìm hiểu về các quy trình được lưu trữ trong MySQL. Trong bài viết này, tôi đang trình bày những điều cơ bản của quy trình được lưu trữ bao gồm

  1. Tóm tắt thủ tục lưu trữ MySQL
  2. Tạo quy trình được lưu trữ bằng cách sử dụng Truy vấn và MySQL Workbench
  3. Tạo một thủ tục được lưu trữ được tham số hóa
  4. Thả quy trình được lưu trữ bằng Truy vấn và MySQL Workbench

Quy trình được lưu trữ là các câu lệnh SQL được bao bọc trong câu lệnh Creat Creating. Quy trình được lưu trữ có thể chứa một câu lệnh có điều kiện như nếu hoặc trường hợp hoặc các vòng lặp. Quy trình được lưu trữ cũng có thể thực hiện một quy trình được lưu trữ khác hoặc một hàm mô đun hóa mã.CREATE PROCEDURE statement. The stored procedure may contain a conditional statement like IF or CASE or the Loops. The stored procedure can also execute another stored procedure or a function that modularizes the code.

Sau đây là những lợi ích của một thủ tục được lưu trữ:

  1. Giảm lưu lượng mạng: Nhiều câu lệnh SQL được gói gọn trong một quy trình được lưu trữ. Khi bạn thực hiện nó, thay vì gửi nhiều truy vấn, chúng tôi chỉ gửi tên và các tham số của quy trình được lưu trữ Multiple SQL Statements are encapsulated in a stored procedure. When you execute it, instead of sending multiple queries, we are sending only the name and the parameters of the stored procedure
  2. Dễ dàng duy trì: Quy trình được lưu trữ có thể tái sử dụng. Chúng tôi có thể triển khai logic kinh doanh trong SP và nó có thể được sử dụng bởi các ứng dụng nhiều lần hoặc các mô -đun khác nhau của ứng dụng có thể sử dụng cùng một quy trình. Bằng cách này, một thủ tục được lưu trữ làm cho cơ sở dữ liệu nhất quán hơn. Nếu có bất kỳ thay đổi nào được yêu cầu, bạn chỉ cần thực hiện thay đổi trong quy trình được lưu trữ The stored procedure are reusable. We can implement the business logic within an SP, and it can be used by applications multiple times, or different modules of an application can use the same procedure. This way, a stored procedure makes the database more consistent. If any change is required, you need to make a change in the stored procedure only
  3. An toàn: Các quy trình được lưu trữ an toàn hơn so với các truy vấn adhoc. Sự cho phép có thể được cấp cho người dùng để thực hiện quy trình được lưu trữ mà không cần cho phép các bảng được sử dụng trong quy trình được lưu trữ. Quy trình được lưu trữ giúp ngăn chặn cơ sở dữ liệu bị tiêm SQL The stored procedures are more secure than the AdHoc queries. The permission can be granted to the user to execute the stored procedure without giving permission to the tables used in the stored procedure. The stored procedure helps to prevent the database from SQL Injection

Cú pháp để tạo quy trình lưu trữ MySQL là như sau:

Tạo quy trình [Tên thủ tục] ([Tham số 1], [Tham số 2], [Tham số 3]) Bắt đầu truy vấn SQL .. Kết thúc
Begin
SQL Queries..
End

Trong cú pháp:

  1. Tên của thủ tục phải được chỉ định sau khi tạo từ khóa quy trìnhCreate Procedure keyword
  2. Sau tên của thủ tục, danh sách các tham số phải được chỉ định trong dấu ngoặc đơn. Danh sách tham số phải được phân tách bằng dấu phẩy
  3. Các truy vấn và mã SQL phải được viết giữa các từ khóa bắt đầu và kết thúcBEGIN and END keywords

Để thực hiện quy trình lưu trữ, bạn có thể sử dụng từ khóa cuộc gọi. Dưới đây là cú pháp:

Gọi [Tên thủ tục] ([Tham số] ..)

Trong cú pháp:

  1. Tên của thủ tục phải được chỉ định sau khi tạo từ khóa quy trình
  2. Sau tên của thủ tục, danh sách các tham số phải được chỉ định trong dấu ngoặc đơn. Danh sách tham số phải được phân tách bằng dấu phẩy

Các truy vấn và mã SQL phải được viết giữa các từ khóa bắt đầu và kết thúcsakila database.

Để thực hiện quy trình lưu trữ, bạn có thể sử dụng từ khóa cuộc gọi. Dưới đây là cú pháp:

Gọi [Tên thủ tục] ([Tham số] ..)

DELIMITER////

Tên thủ tục phải được chỉ định sau từ khóa cuộc gọiPROCEDURE sp_GetMovies()

Nếu thủ tục có các tham số, thì các giá trị tham số phải được chỉ định trong dấu ngoặc đơn

Hãy để chúng tôi tạo một thủ tục lưu trữ cơ bản. Để trình diễn, tôi đang sử dụng cơ sở dữ liệu Sakila.select title,description,release_year,rating from film;

END////

DELIMITER; ;

Tạo một thủ tục được lưu trữ đơn giảnMySQL workbench Connect to the MySQL Database copy-paste the code in the query editor window click on Execute.

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Giả sử bạn muốn điền vào danh sách các bộ phim. Đầu ra phải chứa film_id, tiêu đề, mô tả, năm phát hành và cột xếp hạng. Mã của thủ tục là như sau:

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Tạo quy trình sp_getmovies ()

BẮT ĐẦU

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

& nbsp; & nbsp; & nbsp; & nbsp; chọn tiêu đề, mô tả, phát hành_year, xếp hạng từ phim;

Để tạo quy trình lưu trữ MySQL, hãy mở kết nối Workbench MySQL với cơ sở dữ liệu MySQL sao chép mã trong cửa sổ Trình soạn thảo truy vấn, nhấp vào thực thi.sakila schema Right-click on Stored Procedures Select Create a Stored procedure.

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Bạn có thể xem thủ tục theo thủ tục được lưu trữ. Xem ảnh chụp màn hình dưới đây.sp_getCustomers. In the code block, enter the following query

Để thực hiện thủ tục, chạy lệnh bên dưới.store_id,first_name,last_name,email,create_date,last_update from customer

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Dưới đây là ảnh chụp màn hình một phần của đầu ra:

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Thủ tục đảo Crete bằng cách sử dụng trình hướng dẫn Workbench MySQLsp_GetCustomer has been created successfully.

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Chúng ta có thể sử dụng Trình hướng dẫn Workbench MySQL để tạo quy trình được lưu trữ. Giả sử bạn muốn lấy danh sách khách hàng từ cơ sở dữ liệu Sakila. Để làm điều đó, hãy mở rộng Lược đồ Sakila Nhấp chuột phải vào các quy trình được lưu trữ chọn Tạo quy trình được lưu trữ.Stored Procedures folder of the sakila schema.

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Trong cửa sổ thủ tục mới, một mẫu tạo đã được tạo. Trong mẫu, thay thế tên thủ tục bằng sp_getcustomers. Trong khối mã, nhập truy vấn sau

Chọn Store_ID, First_Name, Last_Name, Email, create_date, last_update từ khách hàng

Khi chúng tôi tạo một quy trình được lưu trữ, các tham số phải được chỉ định trong dấu ngoặc đơn. Cú pháp đang theo sau:

(In | out | inout) (tên tham số [kiểu dữ liệu (độ dài)]))IN|OUT|INOUT)(Parameter Name[datatype(length)])

Trong cú pháp:

  1. Chỉ định loại tham số. Nó có thể ở trong, ra hoặc ra
  2. Chỉ định tên và kiểu dữ liệu của tham số

Ví dụ về tham số

Giả sử chúng tôi muốn có được danh sách các bộ phim dựa trên xếp hạng. Param_rating là một tham số đầu vào và kiểu dữ liệu là varchar. Mã của thủ tục là như sau:param_rating is an input parameter, and the data type is varchar. The code of the procedure is the following:

DELIMITER////

Tạo quy trình SP_GetMoviesByRating (Varchar Inrating (50))PROCEDURE sp_GetMoviesByRating(INrating varchar(50))

BẮT ĐẦU

& NBSP;select title,description,release_year,rating from film where rating=rating;

END////

DELIMITER;;

Để điền vào danh sách các bộ phim có xếp hạng NC-17, chúng tôi chuyển giá trị NC-17 cho quy trình SP_GetMoviesByRating ().NC-17 rating, we pass the NC-17 value to the sp_getMoviesByRating() procedure.

Gọi SP_GetMoviesByRating ('NC-17')sp_GetMoviesByRating('NC-17')

Đầu ra:

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Ví dụ về tham số ra

Giả sử chúng ta muốn có được số lượng các bộ phim có xếp hạng PG-13. Total_Movies là một tham số đầu ra và kiểu dữ liệu là một số nguyên. Số lượng của các bộ phim được gán cho biến ra (Total_Movies) bằng cách sử dụng từ khóa. Mã của thủ tục là như sau:PG-13 rating. The Total_Movies is an output parameter, and the data type is an integer. The count of the movies is assigned to the OUT variable (Total_Movies) using the INTO keyword. The code of the procedure is the following:

DELIMITER////

Tạo quy trình SP_CountMoviesByRating (Out Total_Movies Int)PROCEDURE sp_CountMoviesByRating(OUT Total_Movies int)

BẮT ĐẦU

& NBSP;select count(title)INTO Total_Movies from film where rating='PG-13';

END////

DELIMITER;;

Để điền vào danh sách các bộ phim có xếp hạng NC-17, chúng tôi chuyển giá trị NC-17 cho quy trình SP_GetMoviesByRating ().@PGRatingMovies.

Gọi SP_GetMoviesByRating ('NC-17')sp_CountMoviesByRating(@PGRatingMovies)

Đầu ra:@PGRatingMovies asMovies

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Ví dụ về tham số ra

Giả sử chúng ta muốn có được số lượng các bộ phim có xếp hạng PG-13. Total_Movies là một tham số đầu ra và kiểu dữ liệu là một số nguyên. Số lượng của các bộ phim được gán cho biến ra (Total_Movies) bằng cách sử dụng từ khóa. Mã của thủ tục là như sau:, and the data type is varchar(10). The output parameter is Movies_count, and the data type is an integer.

Tạo quy trình SP_CountMoviesByRating (Out Total_Movies Int)

DELIMITER////

& nbsp; & nbsp; & nbsp; & nbsp; chọn số lượng (tiêu đề) vào Total_movies từ Film WHERE xếp hạng = 'PG-13';PROCEDURE sp_CountMoviesByRating_Inout(inout Movies_count int,Inparam_rating varchar(10))

BẮT ĐẦU

& NBSP;select count(title)INTO Movies_count from film where rating=param_rating;

END////

DELIMITER;;

Để điền vào danh sách các bộ phim có xếp hạng NC-17, chúng tôi chuyển giá trị NC-17 cho quy trình SP_GetMoviesByRating ().CALL keyword and save the output in session variable named @MoviesCount

Gọi SP_GetMoviesByRating ('NC-17')sp_CountMoviesByRating_Inout(@T,'PG-13');

Select@TasMovies@TasMovies

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Đầu ra:

Ví dụ về tham số rastored procedure created in a sakila database, run the following query. Moreover, it also provides the owner, created date, security type, and SQL data access to the stored procedures.

Giả sử chúng ta muốn có được số lượng các bộ phim có xếp hạng PG-13. Total_Movies là một tham số đầu ra và kiểu dữ liệu là một số nguyên. Số lượng của các bộ phim được gán cho biến ra (Total_Movies) bằng cách sử dụng từ khóa. Mã của thủ tục là như sau:routine_name,routine_type,definer,created,security_type,SQL_Data_Access from information_schema.routines where routine_type='PROCEDURE'and routine_schema='sakila';

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Tạo quy trình SP_CountMoviesByRating (Out Total_Movies Int)

& nbsp; & nbsp; & nbsp; & nbsp; chọn số lượng (tiêu đề) vào Total_movies từ Film WHERE xếp hạng = 'PG-13';

Để lưu trữ giá trị được trả về theo quy trình, hãy truyền một biến phiên có tên @pgratingmovies.

Gọi SP_CountMoviesByRating (@pgratingmovies)Drop Procedure keyword. If you want to drop the sp_getCustomers procedure from the sakila database, you can run the following query.

Chọn@pgratingmovies asmoviesprocedure sp_getCustomers

Ví dụ về một tham số inout

Giả sử chúng ta muốn có được tổng số lượng phim dựa trên xếp hạng. Tham số đầu vào là param_rating trong quy trình và kiểu dữ liệu là varchar (10). Tham số đầu ra là phim_count và kiểu dữ liệu là một số nguyên.

Mã thủ tục:

Tạo quy trình sp_countmoviesbyrating_inout (inout film_count int, inparam_rating varchar (10))

& NBSP;

Thực hiện quy trình bằng cách sử dụng từ khóa cuộc gọi và lưu đầu ra trong biến phiên có tên @MoviesCountsakila schema Expand Stored Procedures Right-click on sp_GetMovies Click on Drop Stored Procedure.

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Gọi sp_countmoviesbyrating_inout (@t, 'pg-13');

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Xem danh sách thủ tục được lưu trữ trong cơ sở dữ liệu bằng cách sử dụng truy vấnReview SQL Code to Execute dialog box, you can review the drop statement and the object name.

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Để xem danh sách thủ tục được lưu trữ, bạn có thể truy vấn bảng thông tin_schema.routines. Nó chứa danh sách các quy trình được lưu trữ và các chức năng được lưu trữ được tạo trên cơ sở dữ liệu. Để xem danh sách thủ tục được lưu trữ được tạo trong cơ sở dữ liệu Sakila, hãy chạy truy vấn sau. Hơn nữa, nó cũng cung cấp cho chủ sở hữu, ngày được tạo, loại bảo mật và truy cập dữ liệu SQL cho các quy trình được lưu trữ.

chọn thói quen_name, thường trình_type, definer, được tạo, bảo mật_type, sql_data_access từ thông tin_schema.routines wher

Thả một thủ tục được lưu trữ

  1. Để thả thủ tục được lưu trữ, bạn có thể sử dụng lệnh Drop Prodicure. Cú pháp đang theo sau
  2. Thủ tục thả [nếu tồn tại]

Trong bài viết tiếp theo, chúng ta sẽ tìm hiểu về các quan điểm MySQL.

Mục lục

Tìm hiểu MySQL: Truy vấn dữ liệu từ máy chủ MySQL bằng cách sử dụng câu lệnh CHỌN
Tìm hiểu mysql: phân trang là gì
Tìm hiểu MySQL: Sắp xếp và lọc dữ liệu trong bảng
Tìm hiểu MySQL: Thêm dữ liệu trong các bảng bằng cách sử dụng câu lệnh INSERT
Tìm hiểu MySQL: Tạo và thả bảng tạm thời
Tìm hiểu MySQL: Xóa và cập nhật các câu lệnh
Tìm hiểu MySQL: Những điều cơ bản của các thủ tục lưu trữ MySQL
Tìm hiểu MySQL: Những điều cơ bản của quan điểm MySQL
Tìm hiểu MySQL: Tổng quan về nhật ký nhị phân MySQL
Tìm hiểu MySQL: Tổng quan về tiện ích mysqlbinlog
Tìm hiểu MySQL: Chạy nhiều phiên bản của máy chủ MySQL trên Windows 10
Tìm hiểu MySQL: Chức năng chuỗi MySQL
Tìm hiểu MySQL: Các chức năng lưu lượng điều khiển
Tìm hiểu MySQL: Cài đặt MYSQL Server 8.0.19 bằng Lưu trữ Zip NoInstall
Tìm hiểu MySQL: Bảng sao chép MySQL

  • Tác giả
  • Bài viết gần đây

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Nisarg Upadhyay là quản trị viên cơ sở dữ liệu SQL Server và Microsoft Certified Professional, người có hơn 8 năm kinh nghiệm với quản trị SQL Server và 2 năm với quản trị cơ sở dữ liệu Oracle 10G.

Ông có chuyên môn về thiết kế cơ sở dữ liệu, điều chỉnh hiệu suất, sao lưu và phục hồi, thiết lập HA và DR, di chuyển cơ sở dữ liệu và nâng cấp. Ông đã hoàn thành B.Tech từ Đại học Ganpat. Anh ấy có thể đạt được

Hướng dẫn are there stored procedures in mysql? - có các thủ tục được lưu trữ trong mysql không?

Các thủ tục được lưu trữ được gọi trong MySQL là gì?

Các thủ tục được lưu trữ là các thói quen phụ, phân đoạn các câu lệnh SQL được lưu trữ trong danh mục SQL. Các thủ tục này chứa các tham số trong và ngoài, hoặc cả hai. Họ có thể trả về các bộ kết quả trong trường hợp bạn sử dụng các câu lệnh Chọn; Họ có thể trả về nhiều bộ kết quả.sub routines, segment of SQL statements which are stored in SQL catalog. These procedures contain IN and OUT parameters, or both. They may return result sets in case you use SELECT statements; they can return multiple result-sets.

Chúng ta có thể viết các thủ tục trong mysql không?

Trong trường hợp của MySQL, các quy trình được viết trong MySQL và được lưu trữ trong cơ sở dữ liệu/máy chủ của MySQL.Quy trình MySQL có tên, danh sách tham số và (các) câu lệnh SQL.procedures are written in MySQL and stored in the MySQL database/server. A MySQL procedure has a name, a parameter list, and SQL statement(s).

Làm cách nào để thực hiện một quy trình được lưu trữ trong mysql?

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

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

Để hiển thị tất cả các thủ tục được lưu trữ:..
Hiển thị trạng thái thủ tục ;.
Hiển thị trạng thái chức năng ;.
Hiển thị trạng thái thủ tục trong đó db = 'db_name' ;.
Hiển thị trạng thái chức năng trong đó db = 'db_name' ;.