Hướng dẫn stored procedure in php w3schools - thủ tục được lưu trữ trong php w3schools

Quy trình lưu trữ SQL cho SQL ServerStored Procedures for SQL Server


Thủ tục được lưu trữ là gì?

Một quy trình được lưu trữ là mã SQL đã chuẩn bị mà bạn có thể lưu, vì vậy mã có thể được sử dụng lại nhiều lần.

Vì vậy, nếu bạn có một truy vấn SQL mà bạn viết nhiều lần, hãy lưu nó dưới dạng thủ tục được lưu trữ, và sau đó chỉ cần gọi nó để thực hiện nó.

Bạn cũng có thể chuyển các tham số cho một quy trình được lưu trữ, để quy trình được lưu trữ có thể hoạt động dựa trên (các) giá trị tham số được thông qua.

Cú pháp thủ tục lưu trữ

Tạo quy trình Quy trình_NAME ASSQL_STATENT GO;
AS
sql_statement
GO;

Thực hiện một thủ tục được lưu trữ


Cơ sở dữ liệu demo

Dưới đây là một lựa chọn từ bảng "Khách hàng" trong cơ sở dữ liệu mẫu Northwind:

ID khách hàngTên khách hàngTên Liên lạcĐịa chỉ nhàThành phốMã bưu điệnQuốc gia
1 Alfreds FutterkisteMaria AndersObere str. 57Berlin12209 nước Đức
2 Ana Trujillo Emparedados Y HeladosAna TrujilloAvda. de la constitución 2222México D.F.05021 Mexico
3 Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023 Mexico
4 Antonio Moreno TaqueríaAntonio MorenoMataderos 2312Xung quanh sừngThomas Hardy120 Hanover sq.
5 LondonWA1 1DPVương quốc AnhBerglunds SnabbköpChristina BerglundBerguvsvägen 8


Luleå

S-958 22

Thụy Điển

Ví dụ thủ tục lưu trữ
AS
SELECT * FROM Customers
GO;

Câu lệnh SQL sau đây tạo ra một quy trình được lưu trữ có tên là "selectallcustomers" chọn tất cả các bản ghi từ bảng "khách hàng":

Thụy Điển

Ví dụ thủ tục lưu trữ



Câu lệnh SQL sau đây tạo ra một quy trình được lưu trữ có tên là "selectallcustomers" chọn tất cả các bản ghi từ bảng "khách hàng":

Thí dụ

Thụy Điển

Ví dụ thủ tục lưu trữ
AS
SELECT * FROM Customers WHERE City = @City
GO;

Câu lệnh SQL sau đây tạo ra một quy trình được lưu trữ có tên là "selectallcustomers" chọn tất cả các bản ghi từ bảng "khách hàng":

Thụy Điển

Ví dụ thủ tục lưu trữ


Câu lệnh SQL sau đây tạo ra một quy trình được lưu trữ có tên là "selectallcustomers" chọn tất cả các bản ghi từ bảng "khách hàng":

Thí dụ

Tạo quy trình selectallcustomersasselect * từ khách hàng;

Thụy Điển

Ví dụ thủ tục lưu trữ
AS
SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode
GO;

Câu lệnh SQL sau đây tạo ra một quy trình được lưu trữ có tên là "selectallcustomers" chọn tất cả các bản ghi từ bảng "khách hàng":

Thụy Điển

Ví dụ thủ tục lưu trữ



SQL Tạo quy trình từ khóaCREATE PROCEDURE Keyword

❮ Trước ❮ SQL Keywords tham chiếu ❯ Previous ❮ SQL Keywords Reference Next


Lệnh

mysql> DELIMITER $$ ;
4 được sử dụng để tạo quy trình được lưu trữ.

Một quy trình được lưu trữ là mã SQL đã chuẩn bị mà bạn có thể lưu, vì vậy mã có thể được sử dụng lại nhiều lần.

SQL sau đây tạo ra một quy trình được lưu trữ có tên là "selectallcustomers" chọn tất cả các bản ghi từ bảng "Khách hàng":

Thí dụ

Tạo quy trình selectallcustomersasselect * từ khách hàng;
AS
SELECT * FROM Customers
GO;

Thực hiện quy trình được lưu trữ ở trên như sau:

Thí dụ

Tạo quy trình selectallcustomersasselect * từ khách hàng;


❮ Trước ❮ SQL Keywords tham chiếu ❯ Previous ❮ SQL Keywords Reference Next


Cập nhật lần cuối vào ngày 19 tháng 8 năm 2022 21:50:41 (UTC/GMT +8 giờ)

Thủ tục lưu trữ

Một thủ tục (thường được gọi là thủ tục được lưu trữ) là một chương trình con như một chương trình con trong ngôn ngữ điện toán thông thường, được lưu trữ trong cơ sở dữ liệu. Một thủ tục có tên, danh sách tham số và (các) câu lệnh SQL. Tất cả hầu hết tất cả các hệ thống cơ sở dữ liệu quan hệ đều hỗ trợ thủ tục được lưu trữ, MySQL 5 giới thiệu thủ tục được lưu trữ. Trong các phần sau, chúng tôi đã thảo luận về quy trình MySQL chi tiết và sử dụng MySQL 5.6 trong Windows 7. MySQL 5.6 hỗ trợ "thói quen" và có hai loại thói quen: các quy trình được lưu trữ mà bạn gọi hoặc chức năng có giá trị trả về bạn sử dụng trong các câu lệnh SQL khác khác Giống như cách bạn sử dụng các hàm mySQL được cài đặt sẵn như pi (). Sự khác biệt chính là UDF có thể được sử dụng như bất kỳ biểu thức nào khác trong các câu lệnh SQL, trong khi các quy trình được lưu trữ phải được gọi bằng cách sử dụng câu lệnh CALL.

Tại sao các thủ tục lưu trữ?

  • Các thủ tục lưu trữ là nhanh chóng. Máy chủ MySQL tận dụng một số lợi thế của bộ nhớ đệm, giống như các câu lệnh đã chuẩn bị. Tăng tốc độ chính đến từ việc giảm lưu lượng mạng. Nếu bạn có một tác vụ lặp đi lặp lại yêu cầu kiểm tra, lặp lại, nhiều câu lệnh và không có tương tác người dùng, hãy thực hiện nó với một cuộc gọi đến một quy trình được lưu trữ trên máy chủ.
  • Các thủ tục lưu trữ là di động. Khi bạn viết quy trình được lưu trữ của mình trong SQL, bạn sẽ biết rằng nó sẽ chạy trên mọi nền tảng mà MySQL chạy, mà không bắt buộc bạn phải cài đặt một gói môi trường thời gian chạy bổ sung hoặc đặt quyền để thực hiện chương trình trong hệ điều hành hoặc triển khai các gói khác nhau Nếu bạn có các loại máy tính khác nhau. Đó là lợi thế của việc viết bằng SQL chứ không phải bằng ngôn ngữ bên ngoài như Java hoặc C hoặc PHP.
  • Các quy trình được lưu trữ luôn có sẵn dưới dạng 'mã nguồn' trong chính cơ sở dữ liệu. Và nó có ý nghĩa để liên kết dữ liệu với các quy trình hoạt động trên dữ liệu.
  • Các thủ tục lưu trữ là di cư! MySQL tuân thủ khá chặt chẽ với tiêu chuẩn SQL: 2003. Những người khác (DB2, Mimer) cũng tuân thủ.

Tạo thủ tục

Các tuyên bố sau đây tạo ra một thủ tục được lưu trữ. Theo mặc định, một quy trình được liên kết với cơ sở dữ liệu mặc định (hiện đang được sử dụng cơ sở dữ liệu). Để liên kết quy trình với cơ sở dữ liệu đã cho, chỉ định tên là Database_name.stored_procedure_name khi bạn tạo nó. Đây là cú pháp hoàn chỉnh:.stored_procedure_name when you create it. Here is the complete syntax :

Syntax:

CREATE [DEFINER = { user | CURRENT_USER }]          
PROCEDURE sp_name ([proc_parameter[,...]])          
[characteristic ...] routine_body    
proc_parameter: [ IN | OUT | INOUT ] param_name type    
type:          
Any valid MySQL data type    
characteristic:          
COMMENT 'string'     
| LANGUAGE SQL      
| [NOT] DETERMINISTIC      
| { CONTAINS SQL | NO SQL | READS SQL DATA 
| MODIFIES SQL DATA }      
| SQL SECURITY { DEFINER | INVOKER }    
routine_body:      
Valid SQL routine statement

Trước khi tạo một thủ tục, chúng tôi cần một số thông tin được mô tả trong phần này:

Kiểm tra phiên bản MySQL:

Lệnh sau hiển thị phiên bản MySQL:

mysql>SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.6.12    |
+-----------+
1 row in set (0.00 sec)

Kiểm tra các đặc quyền của người dùng hiện tại:

Tạo quy trình và tạo chức năng yêu cầu tạo đặc quyền thường xuyên. Họ cũng có thể yêu cầu siêu đặc quyền, tùy thuộc vào giá trị Definer, như được mô tả sau trong phần này. Nếu ghi nhật ký nhị phân được bật, chức năng tạo có thể yêu cầu siêu đặc quyền. Theo mặc định, MySQL tự động cấp cho thói quen thay đổi và thực hiện các đặc quyền cho người tạo thường xuyên. Hành vi này có thể được thay đổi bằng cách vô hiệu hóa biến hệ thống Automatic_SP_PRIVILEGES.

mysql> SHOW PRIVILEGES;
+-----------------+----------------------------+-------------------------------------------------------+
| Privilege       | Context                    | Comment                                               |
+-----------------+----------------------------+-------------------------------------------------------+
| Alter           | Tables                     | To alter the table                                    |
| Alter routine   | Functions,Procedures       | To alter or drop stored functions/procedures          |
| Create          | Databases,Tables,Indexes   | To create new databases and tables                    |
| Create routine  | Databases                  | To use CREATE FUNCTION/PROCEDURE                      |
| Create temporary| Databases                  | To use CREATE TEMPORARY TABLE                         |
| tables          |                            |                                                       |
| Create view     | Tables                     | To create new views                                   |
| Create user     | Server Admin               | To create new users                                   |
| Delete          | Tables                     | To delete existing rows                               |
| Drop            | Databases,Tables           | To drop databases, tables, and views                  |
| Event           | Server Admin               | To create, alter, drop and execute events             |
| Execute         | Functions,Procedures       | To execute stored routines                            |
| File            | File access on server      | To read and write files on the server                 |
| Grant option    | Databases,Tables,          | To give to other users those privileges you possess   |
|                 | Functions,Procedures       |                                                       |
| Index           | Tables                     | To create or drop indexes                             |
| Insert          | Tables                     | To insert data into tables                            |
| Lock tables     | Databases                  | To use LOCK TABLES (together with SELECT privilege)   |
| Process         | Server Admin               | To view the plain text of currently executing queries |
| Proxy           | Server Admin               | To make proxy user possible                           |
| References      | Databases,Tables           | To have references on tables                          |
| Reload          | Server Admin               | To reload or refresh tables, logs and privileges      |
| Replication     | Server Admin               | To ask where the slave or master servers are          |
| client          |                            |                                                       |
| Replication     | Server Admin               | To read binary log events from the master             |
| slave           |                            |                                                       |
| Select          | Tables                     | To retrieve rows from table                           |
| Show databases  | Server Admin               | To see all databases with SHOW DATABASES              |
| Show view       | Tables                     | To see views with SHOW CREATE VIEW                    |
| Shutdown        | Server Admin               | To shut down the server                               |
| Super           | Server Admin               | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.   |
| Trigger         | Tables                     | To use triggers                                       |
| Create          | Server Admin               | To create/alter/drop tablespaces                      |
| tablespace      |                            |                                                       |
| Update          | Tables                     | To update existing rows                               |
| Usage           | Server Admin               | No privileges - allow connect only                    |
+-------------------------+--------------------+-------------------------------------------------------+
31 rows in set (0.00 sec)

Chọn cơ sở dữ liệu:

Trước khi tạo một thủ tục, chúng tôi phải chọn cơ sở dữ liệu. Hãy xem danh sách các cơ sở dữ liệu và chọn một trong số chúng.

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hr                 |
| mysql              |
| performance_schema |
| sakila             |
| test               |
| world              |
+--------------------+
7 rows in set (0.06 sec))            

Bây giờ chọn cơ sở dữ liệu 'HR' và liệt kê các bảng:

mysql> USE hr;
Database changed
mysql> SHOW TABLES;
+--------------+
| Tables_in_hr |
+--------------+
| alluser      |
| departments  |
| emp_details  |
| job_history  |
| jobs         |
| locations    |
| regions      |
| user         |
| user_details |
+--------------+
9 rows in set (0.00 sec)

Chọn một dấu phân cách

DELIMITER là ký tự hoặc chuỗi các ký tự được sử dụng để hoàn thành câu lệnh SQL. Theo mặc định, chúng tôi sử dụng dấu chấm phẩy (;) làm dấu phân cách. Nhưng điều này gây ra vấn đề trong thủ tục được lưu trữ vì một thủ tục có thể có nhiều tuyên bố và mọi người phải kết thúc bằng dấu chấm phẩy. Vì vậy, đối với dấu phân cách của bạn, hãy chọn một chuỗi hiếm khi xảy ra trong câu lệnh hoặc trong thủ tục. Ở đây chúng tôi đã sử dụng dấu hiệu đô la kép, tức là $$. Bạn có thể sử dụng bất cứ thứ gì bạn muốn. Để tiếp tục bằng cách sử dụng ";" Như một dấu phân cách sau này, hãy nói "Delimiter; $$". Xem ở đây cách thay đổi dấu phân cách:

mysql> DELIMITER $$ ;

Bây giờ dấu phân cách mặc định là "$$". Đặt lệnh thực thi SQL đơn giản:

mysql> SELECT * FROM user $$
+----------+-----------+--------+
| userid   | password  | name   |
+----------+-----------+--------+
| scott123 | [email protected]   | Scott  |
| ferp6734 | [email protected]&3 | Palash |
| diana094 | [email protected]   | Diana  |
+----------+-----------+--------+
3 rows in set (0.00 sec)

Bây giờ thực hiện lệnh sau để tiếp tục ";" như một dấu phân cách:;" as a delimiter :

mysql> Delimiter; $$

Ví dụ: Thủ tục MySQL

Ở đây chúng tôi đã tạo một quy trình đơn giản có tên là Job_Data, khi chúng tôi sẽ thực hiện quy trình, nó sẽ hiển thị tất cả dữ liệu từ các bảng "công việc".

mysql> DELIMITER $$ ;mysql> CREATE PROCEDURE job_data()
> SELECT * FROM JOBS; $$
Query OK, 0 rows affected (0.00 sec)

Explanation:

- Tạo lệnh thủ tục tạo quy trình được lưu trữ. - Phần tiếp theo là tên thủ tục. Ở đây tên thủ tục là "job_data". - Tên thủ tục không nhạy cảm với trường hợp, vì vậy Job_Data và Job_data là giống nhau. - Bạn không thể sử dụng hai quy trình có cùng tên trong cùng một cơ sở dữ liệu. -Bạn có thể sử dụng tên đủ điều kiện của biểu mẫu "tên cơ sở dữ liệu.procedure-name", ví dụ "hr.job_data". - Tên thủ tục có thể được phân định. Nếu tên được phân định, nó có thể chứa khoảng trắng. - Độ dài tên tối đa là 64 ký tự. -Tránh sử dụng tên của các hàm MySQL tích hợp. - Phần cuối cùng của "Tạo quy trình" là một cặp dấu ngoặc đơn. "()" giữ danh sách tham số vì không có tham số trong quy trình này, danh sách tham số trống. - Phần tiếp theo là chọn * từ các công việc; $$ là tuyên bố cuối cùng của cơ quan thủ tục. Ở đây, dấu chấm phẩy (;) là tùy chọn vì $$ là một tuyên bố thực sự.
- Next part is the procedure name. Here the procedure name is " job_data".
-- Procedure names are not case sensitive, so job_data and JOB_DATA are same.
-- You cannot use two procedures with the same name in the same database.
-- You can use qualified names of the form "database-name.procedure-name", for example "hr.job_data".
-- Procedure names can be delimited. If the name is delimited, it can contain spaces.
-- The maximum name length is 64 characters.
-- Avoid using names of built-in MySQL functions.
-- The last part of "CREATE PROCEDURE" is a pair of parentheses. "()" holds the parameter(s) list as there are no parameters in this procedure, the parameter list is empty.
- Next part is SELECT * FROM JOBS; $$ which is the last statement of the procedure body. Here the semicolon (;) is optional as $$ is a real statement-ender.

Các công cụ để tạo quy trình MySQL

Bạn có thể viết một quy trình trong Công cụ dòng lệnh MySQL hoặc bạn có thể sử dụng MySQL Workbench, một công cụ phía trước tuyệt vời (ở đây chúng tôi đã sử dụng phiên bản 5.3 CE).

Công cụ dòng lệnh MySQL: -

Chọn ứng dụng Lệnh MySQL từ Menu Bắt đầu:

Hướng dẫn stored procedure in php w3schools - thủ tục được lưu trữ trong php w3schools

Chọn dấu nhắc lệnh MySQL sau màn hình sẽ đến:

Hướng dẫn stored procedure in php w3schools - thủ tục được lưu trữ trong php w3schools

Sau khi đăng nhập thành công, bạn có thể truy cập dấu nhắc lệnh MySQL:

Hướng dẫn stored procedure in php w3schools - thủ tục được lưu trữ trong php w3schools

Bây giờ bạn viết và chạy thủ tục của riêng bạn, xem ví dụ sau:

Hướng dẫn stored procedure in php w3schools - thủ tục được lưu trữ trong php w3schools

MySQL Workbench (5.3 CE): -

Chọn MySQL Workbench từ Menu Bắt đầu:

Hướng dẫn stored procedure in php w3schools - thủ tục được lưu trữ trong php w3schools

Sau khi chọn MySQL Workbench, màn hình đăng nhập sẽ đến:

Hướng dẫn stored procedure in php w3schools - thủ tục được lưu trữ trong php w3schools

Bây giờ nhập chi tiết đăng nhập:

Hướng dẫn stored procedure in php w3schools - thủ tục được lưu trữ trong php w3schools

Sau khi đăng nhập thành công, màn hình mới sẽ đến và từ bảng Trình duyệt đối tượng, chọn cơ sở dữ liệu:

Hướng dẫn stored procedure in php w3schools - thủ tục được lưu trữ trong php w3schools

Sau khi chọn cơ sở dữ liệu, nhấp chuột phải vào các thói quen, một cửa sổ bật lên mới sẽ đến:

Hướng dẫn stored procedure in php w3schools - thủ tục được lưu trữ trong php w3schools

Sau khi chọn "Tạo quy trình" sau màn hình sẽ đến nơi bạn có thể viết quy trình của riêng mình.

Hướng dẫn stored procedure in php w3schools - thủ tục được lưu trữ trong php w3schools

Sau khi viết thủ tục, nhấp vào nút Áp dụng và màn hình sau sẽ đến:

Hướng dẫn stored procedure in php w3schools - thủ tục được lưu trữ trong php w3schools

Màn hình tiếp theo sẽ là xem lại tập lệnh và áp dụng trên cơ sở dữ liệu.

Hướng dẫn stored procedure in php w3schools - thủ tục được lưu trữ trong php w3schools

Bây giờ bấm vào nút Kết thúc và chạy thủ tục:

Hướng dẫn stored procedure in php w3schools - thủ tục được lưu trữ trong php w3schools

Gọi một thủ tục

Câu lệnh CALL được sử dụng để gọi một quy trình được lưu trữ trong cơ sở dữ liệu. Đây là cú pháp:

CALL sp_name([parameter[,...]]) 
CALL sp_name[()]

Các thủ tục được lưu trữ không chấp nhận các đối số có thể được gọi mà không cần dấu ngoặc đơn. Do đó, hãy gọi job_data () và gọi job_data là tương đương. Hãy để thực hiện thủ tục.

mysql>SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.6.12    |
+-----------+
1 row in set (0.00 sec)
0

Hiển thị quy trình Tạo

Tuyên bố này là một tiện ích mở rộng MySQL. Nó trả về chuỗi chính xác có thể được sử dụng để tạo lại quy trình được lưu trữ được đặt tên. Cả hai tuyên bố đều yêu cầu bạn là chủ sở hữu của thói quen. Đây là cú pháp:

mysql>SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.6.12    |
+-----------+
1 row in set (0.00 sec)
1

Hãy để thực hiện ở trên và xem đầu ra:

mysql>SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.6.12    |
+-----------+
1 row in set (0.00 sec)
2

MySQL: Các điều khoản đặc điểm

Có một số điều khoản trong Creing Thủ tục Cú pháp mô tả các đặc điểm của thủ tục. Các mệnh đề đến sau dấu ngoặc đơn, nhưng trước cơ thể. Những điều khoản này là tất cả các tùy chọn. Đây là các điều khoản:

mysql>SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.6.12    |
+-----------+
1 row in set (0.00 sec)
3

BÌNH LUẬN : :

Đặc điểm nhận xét là một tiện ích mở rộng MySQL. Nó được sử dụng để mô tả thói quen được lưu trữ và thông tin được hiển thị bởi các câu lệnh quy trình tạo hiển thị.

NGÔN NGỮ :

Đặc tính ngôn ngữ chỉ ra rằng cơ thể của thủ tục được viết bằng SQL.

Không quyết định:

Không xác định, là thông tin, một thói quen được coi là & nbsp; "Xác định" & nbsp; nếu nó luôn tạo ra kết quả tương tự cho các tham số đầu vào giống nhau và "không xác định" & nbsp; nếu không.

Chứa SQL | Không có SQL | Đọc dữ liệu SQL | Sửa đổi dữ liệu SQL

Chứa SQL:

Chứa SQL có nghĩa là không có câu lệnh đọc hoặc ghi dữ liệu, trong thói quen. Ví dụ: các câu lệnh đặt @x = 1 hoặc do release_lock ('abc'), thực thi nhưng không đọc cũng không ghi dữ liệu. Đây là mặc định nếu không có đặc điểm nào được đưa ra rõ ràng.

Không có SQL:

Không có SQL có nghĩa là thói quen không chứa câu lệnh SQL.

Đọc dữ liệu SQL:

Đọc dữ liệu SQL có nghĩa là thường trình chứa các câu lệnh đọc dữ liệu (ví dụ: chọn), nhưng không phải là câu lệnh ghi dữ liệu.

Sửa đổi dữ liệu SQL:

Sửa đổi dữ liệu SQL có nghĩa là thường xuyên chứa các câu lệnh có thể ghi dữ liệu (ví dụ: chèn hoặc xóa).

SQL Security {Definer | Invoker}

SQL Security, có thể được định nghĩa là SQL Security Definer hoặc SQL Security Invoker để chỉ định bối cảnh bảo mật; Đó là, cho dù thường trình thực thi bằng cách sử dụng các đặc quyền của tài khoản có tên trong mệnh đề định kỳ định kỳ hoặc người dùng gọi nó. Tài khoản này phải có quyền truy cập cơ sở dữ liệu mà thói quen được liên kết. Giá trị mặc định là Definer. Người dùng gọi thói quen phải có đặc quyền thực thi cho nó, như tài khoản Definer nếu thường trình thực thi trong bối cảnh bảo mật của Definer.

Tất cả các mệnh đề đặc điểm trên có mặc định. Sau hai tuyên bố tạo ra kết quả tương tự:

mysql>SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.6.12    |
+-----------+
1 row in set (0.00 sec)
4

giống như:

mysql>SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
| 5.6.12    |
+-----------+
1 row in set (0.00 sec)
5

Trong phần tiếp theo, chúng tôi sẽ thảo luận về các tham số

Trước khi truy cập các tham số MySQL, hãy thảo luận về một số câu lệnh Hợp chất MySQL:

MySQL: Tệp ghép

Một tuyên bố ghép là một khối có thể chứa các khối khác; Khai báo cho các biến, trình xử lý điều kiện và con trỏ; và kiểm soát dòng chảy các cấu trúc như vòng lặp và thử nghiệm có điều kiện. Tính đến phiên bản 5.6 MySQL có các câu lệnh ghép sau:

  • Bắt đầu ... kết thúc hợp chất.
  • Nhãn tuyên bố
  • TUYÊN BỐ
  • Các biến trong các chương trình được lưu trữ
  • Báo cáo kiểm soát dòng chảy
  • Con trỏ
  • Xử lý điều kiện
  • Trong phần này, chúng tôi sẽ thảo luận về bốn câu lệnh đầu tiên để bao gồm các tham số của phần Tuyên bố thủ tục tạo.

    Bắt đầu ... Kết thúc cú pháp-tản nhiệt kết thúc

    Bắt đầu ... End & nbsp; khối được sử dụng để viết các câu lệnh ghép, tức là khi bạn cần nhiều hơn một câu lệnh trong các chương trình được lưu trữ (ví dụ: các quy trình, chức năng, trình kích hoạt và sự kiện được lưu trữ). Đây là cú pháp:

    mysql>SELECT VERSION();
    +-----------+
    | VERSION() |
    +-----------+
    | 5.6.12    |
    +-----------+
    1 row in set (0.00 sec)
    
    6

    Statement_list: Nó đại diện cho một hoặc nhiều câu lệnh bị chấm dứt bởi dấu chấm phẩy (;). Bản thân câu lệnh là tùy chọn, do đó, câu lệnh tổng hợp trống bắt đầu là hợp lệ.It represents one or more statements terminated by a semicolon(;). The statement_list itself is optional, so the empty compound statement BEGIN END is valid.

    BEGIN_LABEL, END_LABEL: Xem phần sau. : See the following section.

    Tuyên bố nhãn

    Nhãn được phép cho bắt đầu ... các khối kết thúc và cho vòng lặp, lặp lại và trong khi các câu lệnh. Đây là cú pháp:

    mysql>SELECT VERSION();
    +-----------+
    | VERSION() |
    +-----------+
    | 5.6.12    |
    +-----------+
    1 row in set (0.00 sec)
    
    7

    Sử dụng nhãn cho các câu lệnh sau các quy tắc sau:

    • BEGON_LABEL phải được theo sau bởi một đại tràng
    • BEGIN_LABEL có thể được đưa ra mà không cần end_label. Nếu end_label có mặt, nó phải giống như start_label
    • End_label không thể được đưa ra mà không có BEGIN_LABEL.
    • Các nhãn ở cùng cấp độ tổ phải khác biệt
    • Nhãn có thể dài tới 16 ký tự.

    Tuyên bố tuyên bố

    Tuyên bố khai báo được sử dụng để xác định các mục khác nhau cục bộ cho một chương trình, ví dụ như các biến, điều kiện và trình xử lý cục bộ, con trỏ. Tuyên bố chỉ được sử dụng bên trong một câu lệnh hợp chất bắt đầu ... và phải bắt đầu, trước bất kỳ tuyên bố nào khác. Tuyên bố tuân theo thứ tự sau:

    • Tuyên bố con trỏ phải xuất hiện trước khi khai báo xử lý.
    • Khai báo biến và điều kiện phải xuất hiện trước khi tuyên bố con trỏ hoặc xử lý.

    Các biến trong các chương trình được lưu trữ

    Các biến hệ thống và các biến do người dùng xác định có thể được sử dụng trong các chương trình được lưu trữ, giống như chúng có thể được sử dụng bên ngoài bối cảnh chương trình được lưu trữ. Các chương trình được lưu trữ sử dụng khai báo để xác định các biến cục bộ và các thói quen được lưu trữ (quy trình và chức năng) có thể được khai báo để lấy các tham số truyền đạt các giá trị giữa thói quen và người gọi.

    Khai báo một biến:

    mysql>SELECT VERSION();
    +-----------+
    | VERSION() |
    +-----------+
    | 5.6.12    |
    +-----------+
    1 row in set (0.00 sec)
    
    8

    Để cung cấp giá trị mặc định cho một biến, bao gồm một mệnh đề mặc định. Giá trị có thể được chỉ định là một biểu thức; Nó không cần phải là hằng số. Nếu mệnh đề mặc định bị thiếu, giá trị ban đầu là null.

    Ví dụ: Các biến cục bộ

    Các biến cục bộ được khai báo trong các quy trình được lưu trữ và chỉ hợp lệ trong khối kết thúc bắt đầu nơi chúng được khai báo. Các biến cục bộ có thể có bất kỳ loại dữ liệu SQL nào. Ví dụ sau đây cho thấy việc sử dụng các biến cục bộ trong một quy trình được lưu trữ.

    mysql>SELECT VERSION();
    +-----------+
    | VERSION() |
    +-----------+
    | 5.6.12    |
    +-----------+
    1 row in set (0.00 sec)
    
    9

    Bây giờ thực hiện thủ tục:

    mysql> SHOW PRIVILEGES;
    +-----------------+----------------------------+-------------------------------------------------------+
    | Privilege       | Context                    | Comment                                               |
    +-----------------+----------------------------+-------------------------------------------------------+
    | Alter           | Tables                     | To alter the table                                    |
    | Alter routine   | Functions,Procedures       | To alter or drop stored functions/procedures          |
    | Create          | Databases,Tables,Indexes   | To create new databases and tables                    |
    | Create routine  | Databases                  | To use CREATE FUNCTION/PROCEDURE                      |
    | Create temporary| Databases                  | To use CREATE TEMPORARY TABLE                         |
    | tables          |                            |                                                       |
    | Create view     | Tables                     | To create new views                                   |
    | Create user     | Server Admin               | To create new users                                   |
    | Delete          | Tables                     | To delete existing rows                               |
    | Drop            | Databases,Tables           | To drop databases, tables, and views                  |
    | Event           | Server Admin               | To create, alter, drop and execute events             |
    | Execute         | Functions,Procedures       | To execute stored routines                            |
    | File            | File access on server      | To read and write files on the server                 |
    | Grant option    | Databases,Tables,          | To give to other users those privileges you possess   |
    |                 | Functions,Procedures       |                                                       |
    | Index           | Tables                     | To create or drop indexes                             |
    | Insert          | Tables                     | To insert data into tables                            |
    | Lock tables     | Databases                  | To use LOCK TABLES (together with SELECT privilege)   |
    | Process         | Server Admin               | To view the plain text of currently executing queries |
    | Proxy           | Server Admin               | To make proxy user possible                           |
    | References      | Databases,Tables           | To have references on tables                          |
    | Reload          | Server Admin               | To reload or refresh tables, logs and privileges      |
    | Replication     | Server Admin               | To ask where the slave or master servers are          |
    | client          |                            |                                                       |
    | Replication     | Server Admin               | To read binary log events from the master             |
    | slave           |                            |                                                       |
    | Select          | Tables                     | To retrieve rows from table                           |
    | Show databases  | Server Admin               | To see all databases with SHOW DATABASES              |
    | Show view       | Tables                     | To see views with SHOW CREATE VIEW                    |
    | Shutdown        | Server Admin               | To shut down the server                               |
    | Super           | Server Admin               | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.   |
    | Trigger         | Tables                     | To use triggers                                       |
    | Create          | Server Admin               | To create/alter/drop tablespaces                      |
    | tablespace      |                            |                                                       |
    | Update          | Tables                     | To update existing rows                               |
    | Usage           | Server Admin               | No privileges - allow connect only                    |
    +-------------------------+--------------------+-------------------------------------------------------+
    31 rows in set (0.00 sec)
    
    0

    Ví dụ: Biến người dùng

    Trong các quy trình được lưu trữ của MySQL, các biến người dùng được tham chiếu bằng ampersand ( @) có tiền tố cho tên biến người dùng (ví dụ: @x và @y). Ví dụ sau đây cho thấy việc sử dụng các biến người dùng trong quy trình được lưu trữ:

    mysql> SHOW PRIVILEGES;
    +-----------------+----------------------------+-------------------------------------------------------+
    | Privilege       | Context                    | Comment                                               |
    +-----------------+----------------------------+-------------------------------------------------------+
    | Alter           | Tables                     | To alter the table                                    |
    | Alter routine   | Functions,Procedures       | To alter or drop stored functions/procedures          |
    | Create          | Databases,Tables,Indexes   | To create new databases and tables                    |
    | Create routine  | Databases                  | To use CREATE FUNCTION/PROCEDURE                      |
    | Create temporary| Databases                  | To use CREATE TEMPORARY TABLE                         |
    | tables          |                            |                                                       |
    | Create view     | Tables                     | To create new views                                   |
    | Create user     | Server Admin               | To create new users                                   |
    | Delete          | Tables                     | To delete existing rows                               |
    | Drop            | Databases,Tables           | To drop databases, tables, and views                  |
    | Event           | Server Admin               | To create, alter, drop and execute events             |
    | Execute         | Functions,Procedures       | To execute stored routines                            |
    | File            | File access on server      | To read and write files on the server                 |
    | Grant option    | Databases,Tables,          | To give to other users those privileges you possess   |
    |                 | Functions,Procedures       |                                                       |
    | Index           | Tables                     | To create or drop indexes                             |
    | Insert          | Tables                     | To insert data into tables                            |
    | Lock tables     | Databases                  | To use LOCK TABLES (together with SELECT privilege)   |
    | Process         | Server Admin               | To view the plain text of currently executing queries |
    | Proxy           | Server Admin               | To make proxy user possible                           |
    | References      | Databases,Tables           | To have references on tables                          |
    | Reload          | Server Admin               | To reload or refresh tables, logs and privileges      |
    | Replication     | Server Admin               | To ask where the slave or master servers are          |
    | client          |                            |                                                       |
    | Replication     | Server Admin               | To read binary log events from the master             |
    | slave           |                            |                                                       |
    | Select          | Tables                     | To retrieve rows from table                           |
    | Show databases  | Server Admin               | To see all databases with SHOW DATABASES              |
    | Show view       | Tables                     | To see views with SHOW CREATE VIEW                    |
    | Shutdown        | Server Admin               | To shut down the server                               |
    | Super           | Server Admin               | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.   |
    | Trigger         | Tables                     | To use triggers                                       |
    | Create          | Server Admin               | To create/alter/drop tablespaces                      |
    | tablespace      |                            |                                                       |
    | Update          | Tables                     | To update existing rows                               |
    | Usage           | Server Admin               | No privileges - allow connect only                    |
    +-------------------------+--------------------+-------------------------------------------------------+
    31 rows in set (0.00 sec)
    
    1

    Bây giờ thực hiện thủ tục:

    mysql> SHOW PRIVILEGES;
    +-----------------+----------------------------+-------------------------------------------------------+
    | Privilege       | Context                    | Comment                                               |
    +-----------------+----------------------------+-------------------------------------------------------+
    | Alter           | Tables                     | To alter the table                                    |
    | Alter routine   | Functions,Procedures       | To alter or drop stored functions/procedures          |
    | Create          | Databases,Tables,Indexes   | To create new databases and tables                    |
    | Create routine  | Databases                  | To use CREATE FUNCTION/PROCEDURE                      |
    | Create temporary| Databases                  | To use CREATE TEMPORARY TABLE                         |
    | tables          |                            |                                                       |
    | Create view     | Tables                     | To create new views                                   |
    | Create user     | Server Admin               | To create new users                                   |
    | Delete          | Tables                     | To delete existing rows                               |
    | Drop            | Databases,Tables           | To drop databases, tables, and views                  |
    | Event           | Server Admin               | To create, alter, drop and execute events             |
    | Execute         | Functions,Procedures       | To execute stored routines                            |
    | File            | File access on server      | To read and write files on the server                 |
    | Grant option    | Databases,Tables,          | To give to other users those privileges you possess   |
    |                 | Functions,Procedures       |                                                       |
    | Index           | Tables                     | To create or drop indexes                             |
    | Insert          | Tables                     | To insert data into tables                            |
    | Lock tables     | Databases                  | To use LOCK TABLES (together with SELECT privilege)   |
    | Process         | Server Admin               | To view the plain text of currently executing queries |
    | Proxy           | Server Admin               | To make proxy user possible                           |
    | References      | Databases,Tables           | To have references on tables                          |
    | Reload          | Server Admin               | To reload or refresh tables, logs and privileges      |
    | Replication     | Server Admin               | To ask where the slave or master servers are          |
    | client          |                            |                                                       |
    | Replication     | Server Admin               | To read binary log events from the master             |
    | slave           |                            |                                                       |
    | Select          | Tables                     | To retrieve rows from table                           |
    | Show databases  | Server Admin               | To see all databases with SHOW DATABASES              |
    | Show view       | Tables                     | To see views with SHOW CREATE VIEW                    |
    | Shutdown        | Server Admin               | To shut down the server                               |
    | Super           | Server Admin               | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.   |
    | Trigger         | Tables                     | To use triggers                                       |
    | Create          | Server Admin               | To create/alter/drop tablespaces                      |
    | tablespace      |                            |                                                       |
    | Update          | Tables                     | To update existing rows                               |
    | Usage           | Server Admin               | No privileges - allow connect only                    |
    +-------------------------+--------------------+-------------------------------------------------------+
    31 rows in set (0.00 sec)
    
    2

    Ví dụ: Biến người dùng

    Trong các quy trình được lưu trữ của MySQL, các biến người dùng được tham chiếu bằng ampersand ( @) có tiền tố cho tên biến người dùng (ví dụ: @x và @y). Ví dụ sau đây cho thấy việc sử dụng các biến người dùng trong quy trình được lưu trữ:

    mysql> SHOW PRIVILEGES;
    +-----------------+----------------------------+-------------------------------------------------------+
    | Privilege       | Context                    | Comment                                               |
    +-----------------+----------------------------+-------------------------------------------------------+
    | Alter           | Tables                     | To alter the table                                    |
    | Alter routine   | Functions,Procedures       | To alter or drop stored functions/procedures          |
    | Create          | Databases,Tables,Indexes   | To create new databases and tables                    |
    | Create routine  | Databases                  | To use CREATE FUNCTION/PROCEDURE                      |
    | Create temporary| Databases                  | To use CREATE TEMPORARY TABLE                         |
    | tables          |                            |                                                       |
    | Create view     | Tables                     | To create new views                                   |
    | Create user     | Server Admin               | To create new users                                   |
    | Delete          | Tables                     | To delete existing rows                               |
    | Drop            | Databases,Tables           | To drop databases, tables, and views                  |
    | Event           | Server Admin               | To create, alter, drop and execute events             |
    | Execute         | Functions,Procedures       | To execute stored routines                            |
    | File            | File access on server      | To read and write files on the server                 |
    | Grant option    | Databases,Tables,          | To give to other users those privileges you possess   |
    |                 | Functions,Procedures       |                                                       |
    | Index           | Tables                     | To create or drop indexes                             |
    | Insert          | Tables                     | To insert data into tables                            |
    | Lock tables     | Databases                  | To use LOCK TABLES (together with SELECT privilege)   |
    | Process         | Server Admin               | To view the plain text of currently executing queries |
    | Proxy           | Server Admin               | To make proxy user possible                           |
    | References      | Databases,Tables           | To have references on tables                          |
    | Reload          | Server Admin               | To reload or refresh tables, logs and privileges      |
    | Replication     | Server Admin               | To ask where the slave or master servers are          |
    | client          |                            |                                                       |
    | Replication     | Server Admin               | To read binary log events from the master             |
    | slave           |                            |                                                       |
    | Select          | Tables                     | To retrieve rows from table                           |
    | Show databases  | Server Admin               | To see all databases with SHOW DATABASES              |
    | Show view       | Tables                     | To see views with SHOW CREATE VIEW                    |
    | Shutdown        | Server Admin               | To shut down the server                               |
    | Super           | Server Admin               | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.   |
    | Trigger         | Tables                     | To use triggers                                       |
    | Create          | Server Admin               | To create/alter/drop tablespaces                      |
    | tablespace      |                            |                                                       |
    | Update          | Tables                     | To update existing rows                               |
    | Usage           | Server Admin               | No privileges - allow connect only                    |
    +-------------------------+--------------------+-------------------------------------------------------+
    31 rows in set (0.00 sec)
    
    3

    MySQL: Thông số thủ tục

    Dưới đây là phần tham số của Cryplure Cú pháp:

    Chúng ta có thể phân chia câu lệnh Quy trình tạo ở trên theo các cách sau:

    1. Tạo quy trình sp_name () ...

    2. Tạo quy trình sp_name ([in] param_name loại) ...

    3. Tạo quy trình sp_name ([out] param_name loại) ...

    4. Tạo quy trình sp_name ([inout] param_name loại) ...

    Trong ví dụ đầu tiên, danh sách tham số trống.

    Trong Examp thứ hai, tham số le an & nbsp; in & nbsp; chuyển một giá trị vào một thủ tục. Quy trình có thể sửa đổi giá trị, nhưng việc sửa đổi không hiển thị cho người gọi khi thủ tục trả về.

    Trong ví dụ thứ ba, một tham số OUT chuyển giá trị từ quy trình trở lại người gọi. Giá trị ban đầu của nó là NULL trong quy trình và giá trị của nó được hiển thị cho người gọi khi thủ tục trả về.

    Trong ví dụ thứ tư, một tham số inout được người gọi khởi tạo, có thể được sửa đổi theo quy trình và bất kỳ thay đổi nào được thực hiện bởi quy trình đều hiển thị cho người gọi khi thủ tục trả về.

    Trong một quy trình, mỗi tham số là một tham số trong mặc định. Để chỉ định khác cho một tham số, hãy sử dụng từ khóa hoặc ra trước tên tham số.

    mysql> SHOW PRIVILEGES;
    +-----------------+----------------------------+-------------------------------------------------------+
    | Privilege       | Context                    | Comment                                               |
    +-----------------+----------------------------+-------------------------------------------------------+
    | Alter           | Tables                     | To alter the table                                    |
    | Alter routine   | Functions,Procedures       | To alter or drop stored functions/procedures          |
    | Create          | Databases,Tables,Indexes   | To create new databases and tables                    |
    | Create routine  | Databases                  | To use CREATE FUNCTION/PROCEDURE                      |
    | Create temporary| Databases                  | To use CREATE TEMPORARY TABLE                         |
    | tables          |                            |                                                       |
    | Create view     | Tables                     | To create new views                                   |
    | Create user     | Server Admin               | To create new users                                   |
    | Delete          | Tables                     | To delete existing rows                               |
    | Drop            | Databases,Tables           | To drop databases, tables, and views                  |
    | Event           | Server Admin               | To create, alter, drop and execute events             |
    | Execute         | Functions,Procedures       | To execute stored routines                            |
    | File            | File access on server      | To read and write files on the server                 |
    | Grant option    | Databases,Tables,          | To give to other users those privileges you possess   |
    |                 | Functions,Procedures       |                                                       |
    | Index           | Tables                     | To create or drop indexes                             |
    | Insert          | Tables                     | To insert data into tables                            |
    | Lock tables     | Databases                  | To use LOCK TABLES (together with SELECT privilege)   |
    | Process         | Server Admin               | To view the plain text of currently executing queries |
    | Proxy           | Server Admin               | To make proxy user possible                           |
    | References      | Databases,Tables           | To have references on tables                          |
    | Reload          | Server Admin               | To reload or refresh tables, logs and privileges      |
    | Replication     | Server Admin               | To ask where the slave or master servers are          |
    | client          |                            |                                                       |
    | Replication     | Server Admin               | To read binary log events from the master             |
    | slave           |                            |                                                       |
    | Select          | Tables                     | To retrieve rows from table                           |
    | Show databases  | Server Admin               | To see all databases with SHOW DATABASES              |
    | Show view       | Tables                     | To see views with SHOW CREATE VIEW                    |
    | Shutdown        | Server Admin               | To shut down the server                               |
    | Super           | Server Admin               | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.   |
    | Trigger         | Tables                     | To use triggers                                       |
    | Create          | Server Admin               | To create/alter/drop tablespaces                      |
    | tablespace      |                            |                                                       |
    | Update          | Tables                     | To update existing rows                               |
    | Usage           | Server Admin               | No privileges - allow connect only                    |
    +-------------------------+--------------------+-------------------------------------------------------+
    31 rows in set (0.00 sec)
    
    4

    Quy trình MySQL: Ví dụ tham số

    mysql> SHOW PRIVILEGES;
    +-----------------+----------------------------+-------------------------------------------------------+
    | Privilege       | Context                    | Comment                                               |
    +-----------------+----------------------------+-------------------------------------------------------+
    | Alter           | Tables                     | To alter the table                                    |
    | Alter routine   | Functions,Procedures       | To alter or drop stored functions/procedures          |
    | Create          | Databases,Tables,Indexes   | To create new databases and tables                    |
    | Create routine  | Databases                  | To use CREATE FUNCTION/PROCEDURE                      |
    | Create temporary| Databases                  | To use CREATE TEMPORARY TABLE                         |
    | tables          |                            |                                                       |
    | Create view     | Tables                     | To create new views                                   |
    | Create user     | Server Admin               | To create new users                                   |
    | Delete          | Tables                     | To delete existing rows                               |
    | Drop            | Databases,Tables           | To drop databases, tables, and views                  |
    | Event           | Server Admin               | To create, alter, drop and execute events             |
    | Execute         | Functions,Procedures       | To execute stored routines                            |
    | File            | File access on server      | To read and write files on the server                 |
    | Grant option    | Databases,Tables,          | To give to other users those privileges you possess   |
    |                 | Functions,Procedures       |                                                       |
    | Index           | Tables                     | To create or drop indexes                             |
    | Insert          | Tables                     | To insert data into tables                            |
    | Lock tables     | Databases                  | To use LOCK TABLES (together with SELECT privilege)   |
    | Process         | Server Admin               | To view the plain text of currently executing queries |
    | Proxy           | Server Admin               | To make proxy user possible                           |
    | References      | Databases,Tables           | To have references on tables                          |
    | Reload          | Server Admin               | To reload or refresh tables, logs and privileges      |
    | Replication     | Server Admin               | To ask where the slave or master servers are          |
    | client          |                            |                                                       |
    | Replication     | Server Admin               | To read binary log events from the master             |
    | slave           |                            |                                                       |
    | Select          | Tables                     | To retrieve rows from table                           |
    | Show databases  | Server Admin               | To see all databases with SHOW DATABASES              |
    | Show view       | Tables                     | To see views with SHOW CREATE VIEW                    |
    | Shutdown        | Server Admin               | To shut down the server                               |
    | Super           | Server Admin               | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.   |
    | Trigger         | Tables                     | To use triggers                                       |
    | Create          | Server Admin               | To create/alter/drop tablespaces                      |
    | tablespace      |                            |                                                       |
    | Update          | Tables                     | To update existing rows                               |
    | Usage           | Server Admin               | No privileges - allow connect only                    |
    +-------------------------+--------------------+-------------------------------------------------------+
    31 rows in set (0.00 sec)
    
    5

    Trong quy trình sau, chúng tôi đã sử dụng tham số 'var1' (loại số nguyên) chấp nhận một số từ người dùng. Trong phần thân của quy trình, có một câu lệnh chọn lọc các hàng từ bảng 'công việc' và số lượng hàng sẽ được cung cấp bởi người dùng. Đây là thủ tục:

    mysql> SHOW PRIVILEGES;
    +-----------------+----------------------------+-------------------------------------------------------+
    | Privilege       | Context                    | Comment                                               |
    +-----------------+----------------------------+-------------------------------------------------------+
    | Alter           | Tables                     | To alter the table                                    |
    | Alter routine   | Functions,Procedures       | To alter or drop stored functions/procedures          |
    | Create          | Databases,Tables,Indexes   | To create new databases and tables                    |
    | Create routine  | Databases                  | To use CREATE FUNCTION/PROCEDURE                      |
    | Create temporary| Databases                  | To use CREATE TEMPORARY TABLE                         |
    | tables          |                            |                                                       |
    | Create view     | Tables                     | To create new views                                   |
    | Create user     | Server Admin               | To create new users                                   |
    | Delete          | Tables                     | To delete existing rows                               |
    | Drop            | Databases,Tables           | To drop databases, tables, and views                  |
    | Event           | Server Admin               | To create, alter, drop and execute events             |
    | Execute         | Functions,Procedures       | To execute stored routines                            |
    | File            | File access on server      | To read and write files on the server                 |
    | Grant option    | Databases,Tables,          | To give to other users those privileges you possess   |
    |                 | Functions,Procedures       |                                                       |
    | Index           | Tables                     | To create or drop indexes                             |
    | Insert          | Tables                     | To insert data into tables                            |
    | Lock tables     | Databases                  | To use LOCK TABLES (together with SELECT privilege)   |
    | Process         | Server Admin               | To view the plain text of currently executing queries |
    | Proxy           | Server Admin               | To make proxy user possible                           |
    | References      | Databases,Tables           | To have references on tables                          |
    | Reload          | Server Admin               | To reload or refresh tables, logs and privileges      |
    | Replication     | Server Admin               | To ask where the slave or master servers are          |
    | client          |                            |                                                       |
    | Replication     | Server Admin               | To read binary log events from the master             |
    | slave           |                            |                                                       |
    | Select          | Tables                     | To retrieve rows from table                           |
    | Show databases  | Server Admin               | To see all databases with SHOW DATABASES              |
    | Show view       | Tables                     | To see views with SHOW CREATE VIEW                    |
    | Shutdown        | Server Admin               | To shut down the server                               |
    | Super           | Server Admin               | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.   |
    | Trigger         | Tables                     | To use triggers                                       |
    | Create          | Server Admin               | To create/alter/drop tablespaces                      |
    | tablespace      |                            |                                                       |
    | Update          | Tables                     | To update existing rows                               |
    | Usage           | Server Admin               | No privileges - allow connect only                    |
    +-------------------------+--------------------+-------------------------------------------------------+
    31 rows in set (0.00 sec)
    
    6

    Để thực hiện 2 hàng đầu tiên từ bảng 'công việc' thực hiện lệnh sau:

    Bây giờ thực hiện 5 hàng đầu tiên từ bảng 'công việc':

    mysql> SHOW PRIVILEGES;
    +-----------------+----------------------------+-------------------------------------------------------+
    | Privilege       | Context                    | Comment                                               |
    +-----------------+----------------------------+-------------------------------------------------------+
    | Alter           | Tables                     | To alter the table                                    |
    | Alter routine   | Functions,Procedures       | To alter or drop stored functions/procedures          |
    | Create          | Databases,Tables,Indexes   | To create new databases and tables                    |
    | Create routine  | Databases                  | To use CREATE FUNCTION/PROCEDURE                      |
    | Create temporary| Databases                  | To use CREATE TEMPORARY TABLE                         |
    | tables          |                            |                                                       |
    | Create view     | Tables                     | To create new views                                   |
    | Create user     | Server Admin               | To create new users                                   |
    | Delete          | Tables                     | To delete existing rows                               |
    | Drop            | Databases,Tables           | To drop databases, tables, and views                  |
    | Event           | Server Admin               | To create, alter, drop and execute events             |
    | Execute         | Functions,Procedures       | To execute stored routines                            |
    | File            | File access on server      | To read and write files on the server                 |
    | Grant option    | Databases,Tables,          | To give to other users those privileges you possess   |
    |                 | Functions,Procedures       |                                                       |
    | Index           | Tables                     | To create or drop indexes                             |
    | Insert          | Tables                     | To insert data into tables                            |
    | Lock tables     | Databases                  | To use LOCK TABLES (together with SELECT privilege)   |
    | Process         | Server Admin               | To view the plain text of currently executing queries |
    | Proxy           | Server Admin               | To make proxy user possible                           |
    | References      | Databases,Tables           | To have references on tables                          |
    | Reload          | Server Admin               | To reload or refresh tables, logs and privileges      |
    | Replication     | Server Admin               | To ask where the slave or master servers are          |
    | client          |                            |                                                       |
    | Replication     | Server Admin               | To read binary log events from the master             |
    | slave           |                            |                                                       |
    | Select          | Tables                     | To retrieve rows from table                           |
    | Show databases  | Server Admin               | To see all databases with SHOW DATABASES              |
    | Show view       | Tables                     | To see views with SHOW CREATE VIEW                    |
    | Shutdown        | Server Admin               | To shut down the server                               |
    | Super           | Server Admin               | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.   |
    | Trigger         | Tables                     | To use triggers                                       |
    | Create          | Server Admin               | To create/alter/drop tablespaces                      |
    | tablespace      |                            |                                                       |
    | Update          | Tables                     | To update existing rows                               |
    | Usage           | Server Admin               | No privileges - allow connect only                    |
    +-------------------------+--------------------+-------------------------------------------------------+
    31 rows in set (0.00 sec)
    
    7

    Quy trình MySQL: Ví dụ về tham số

    mysql> SHOW PRIVILEGES;
    +-----------------+----------------------------+-------------------------------------------------------+
    | Privilege       | Context                    | Comment                                               |
    +-----------------+----------------------------+-------------------------------------------------------+
    | Alter           | Tables                     | To alter the table                                    |
    | Alter routine   | Functions,Procedures       | To alter or drop stored functions/procedures          |
    | Create          | Databases,Tables,Indexes   | To create new databases and tables                    |
    | Create routine  | Databases                  | To use CREATE FUNCTION/PROCEDURE                      |
    | Create temporary| Databases                  | To use CREATE TEMPORARY TABLE                         |
    | tables          |                            |                                                       |
    | Create view     | Tables                     | To create new views                                   |
    | Create user     | Server Admin               | To create new users                                   |
    | Delete          | Tables                     | To delete existing rows                               |
    | Drop            | Databases,Tables           | To drop databases, tables, and views                  |
    | Event           | Server Admin               | To create, alter, drop and execute events             |
    | Execute         | Functions,Procedures       | To execute stored routines                            |
    | File            | File access on server      | To read and write files on the server                 |
    | Grant option    | Databases,Tables,          | To give to other users those privileges you possess   |
    |                 | Functions,Procedures       |                                                       |
    | Index           | Tables                     | To create or drop indexes                             |
    | Insert          | Tables                     | To insert data into tables                            |
    | Lock tables     | Databases                  | To use LOCK TABLES (together with SELECT privilege)   |
    | Process         | Server Admin               | To view the plain text of currently executing queries |
    | Proxy           | Server Admin               | To make proxy user possible                           |
    | References      | Databases,Tables           | To have references on tables                          |
    | Reload          | Server Admin               | To reload or refresh tables, logs and privileges      |
    | Replication     | Server Admin               | To ask where the slave or master servers are          |
    | client          |                            |                                                       |
    | Replication     | Server Admin               | To read binary log events from the master             |
    | slave           |                            |                                                       |
    | Select          | Tables                     | To retrieve rows from table                           |
    | Show databases  | Server Admin               | To see all databases with SHOW DATABASES              |
    | Show view       | Tables                     | To see views with SHOW CREATE VIEW                    |
    | Shutdown        | Server Admin               | To shut down the server                               |
    | Super           | Server Admin               | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.   |
    | Trigger         | Tables                     | To use triggers                                       |
    | Create          | Server Admin               | To create/alter/drop tablespaces                      |
    | tablespace      |                            |                                                       |
    | Update          | Tables                     | To update existing rows                               |
    | Usage           | Server Admin               | No privileges - allow connect only                    |
    +-------------------------+--------------------+-------------------------------------------------------+
    31 rows in set (0.00 sec)
    
    8

    Ví dụ sau đây cho thấy một quy trình được lưu trữ đơn giản sử dụng tham số OUT. Trong quy trình Hàm MySQL Max () lấy lại mức lương tối đa từ bảng MAX_SALARY của bảng công việc.

    Trong phần thân của thủ tục, tham số sẽ nhận được mức lương cao nhất từ ​​cột MAX_SALARY. Sau khi gọi thủ tục, Word Out cho DBMS rằng giá trị đi ra từ quy trình. Ở đây Highest_salary là tên của tham số đầu ra và chúng tôi đã chuyển giá trị của nó cho một biến phiên có tên @M, trong câu lệnh CALL.

    mysql> SHOW PRIVILEGES;
    +-----------------+----------------------------+-------------------------------------------------------+
    | Privilege       | Context                    | Comment                                               |
    +-----------------+----------------------------+-------------------------------------------------------+
    | Alter           | Tables                     | To alter the table                                    |
    | Alter routine   | Functions,Procedures       | To alter or drop stored functions/procedures          |
    | Create          | Databases,Tables,Indexes   | To create new databases and tables                    |
    | Create routine  | Databases                  | To use CREATE FUNCTION/PROCEDURE                      |
    | Create temporary| Databases                  | To use CREATE TEMPORARY TABLE                         |
    | tables          |                            |                                                       |
    | Create view     | Tables                     | To create new views                                   |
    | Create user     | Server Admin               | To create new users                                   |
    | Delete          | Tables                     | To delete existing rows                               |
    | Drop            | Databases,Tables           | To drop databases, tables, and views                  |
    | Event           | Server Admin               | To create, alter, drop and execute events             |
    | Execute         | Functions,Procedures       | To execute stored routines                            |
    | File            | File access on server      | To read and write files on the server                 |
    | Grant option    | Databases,Tables,          | To give to other users those privileges you possess   |
    |                 | Functions,Procedures       |                                                       |
    | Index           | Tables                     | To create or drop indexes                             |
    | Insert          | Tables                     | To insert data into tables                            |
    | Lock tables     | Databases                  | To use LOCK TABLES (together with SELECT privilege)   |
    | Process         | Server Admin               | To view the plain text of currently executing queries |
    | Proxy           | Server Admin               | To make proxy user possible                           |
    | References      | Databases,Tables           | To have references on tables                          |
    | Reload          | Server Admin               | To reload or refresh tables, logs and privileges      |
    | Replication     | Server Admin               | To ask where the slave or master servers are          |
    | client          |                            |                                                       |
    | Replication     | Server Admin               | To read binary log events from the master             |
    | slave           |                            |                                                       |
    | Select          | Tables                     | To retrieve rows from table                           |
    | Show databases  | Server Admin               | To see all databases with SHOW DATABASES              |
    | Show view       | Tables                     | To see views with SHOW CREATE VIEW                    |
    | Shutdown        | Server Admin               | To shut down the server                               |
    | Super           | Server Admin               | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.   |
    | Trigger         | Tables                     | To use triggers                                       |
    | Create          | Server Admin               | To create/alter/drop tablespaces                      |
    | tablespace      |                            |                                                       |
    | Update          | Tables                     | To update existing rows                               |
    | Usage           | Server Admin               | No privileges - allow connect only                    |
    +-------------------------+--------------------+-------------------------------------------------------+
    31 rows in set (0.00 sec)
    
    9

    Bây giờ hãy kiểm tra số lượng người dùng nam và nữ của các bảng đã nói:male and female users of the said tables :

    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | hr                 |
    | mysql              |
    | performance_schema |
    | sakila             |
    | test               |
    | world              |
    +--------------------+
    7 rows in set (0.06 sec))            
    
    0

    MySQL: Các câu lệnh điều khiển dòng chảy

    MySQL hỗ trợ nếu, trường hợp, lặp lại, rời đi, vòng lặp, trong khi và lặp lại các cấu trúc để kiểm soát luồng trong các chương trình được lưu trữ. Nó cũng hỗ trợ lợi nhuận trong các chức năng được lưu trữ.

    MySQL: Nếu câu lệnh

    Câu lệnh IF thực hiện một cấu trúc có điều kiện cơ bản trong một chương trình được lưu trữ và phải được chấm dứt bằng dấu chấm phẩy. Ngoài ra còn có hàm if (), khác với câu lệnh if. Đây là cú pháp của câu lệnh IF:

    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | hr                 |
    | mysql              |
    | performance_schema |
    | sakila             |
    | test               |
    | world              |
    +--------------------+
    7 rows in set (0.06 sec))            
    
    1

    - Nếu điều kiện đánh giá là TRUE, thì các câu lệnh ALSEF (các) mệnh đề khác sẽ thực thi. - nếu không & nbsp; điều kiện & nbsp; khớp, các & nbsp; other & nbsp; mệnh đề & nbsp; statement (s) & nbsp; thực thi. - mỗi & nbsp; statement (s) & nbsp; bao gồm một hoặc nhiều câu lệnh SQL; Một tuyên bố trống & nbsp; không được phép.
    - If no condition matches, the ELSE clause statement(s) executes.
    - Each statement(s) consists of one or more SQL statements; an empty statement(s) is not permitted.

    Example:

    Trong ví dụ sau, chúng tôi vượt qua tham số trong tham số để lấy tên người dùng. Trong quy trình, chúng tôi đã sử dụng nếu Otherif và câu lệnh khác để lấy tên người dùng so với nhiều ID người dùng. Tên người dùng sẽ được lưu trữ vào tham số Inout user_name.

    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | hr                 |
    | mysql              |
    | performance_schema |
    | sakila             |
    | test               |
    | world              |
    +--------------------+
    7 rows in set (0.06 sec))            
    
    2

    Thực hiện thủ tục:

    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | hr                 |
    | mysql              |
    | performance_schema |
    | sakila             |
    | test               |
    | world              |
    +--------------------+
    7 rows in set (0.06 sec))            
    
    3

    MySQL: Tuyên bố trường hợp

    Tuyên bố trường hợp được sử dụng để tạo cấu trúc có điều kiện phức tạp trong các chương trình được lưu trữ. Câu lệnh & nbsp; case & nbsp; không thể có một & nbsp; khác null & nbsp; mệnh đề, và nó được chấm dứt với & nbsp; trường hợp cuối thay vì & nbsp; end. Đây là cú pháp:

    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | hr                 |
    | mysql              |
    | performance_schema |
    | sakila             |
    | test               |
    | world              |
    +--------------------+
    7 rows in set (0.06 sec))            
    
    4

    hoặc

    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | hr                 |
    | mysql              |
    | performance_schema |
    | sakila             |
    | test               |
    | world              |
    +--------------------+
    7 rows in set (0.06 sec))            
    
    5

    Giải thích: Cú pháp đầu tiên - CASE_VALUE là một biểu thức. - Giá trị này được so sánh với biểu thức whi_value trong mỗi mệnh đề cho đến khi một trong số chúng bằng nhau. - Khi tìm thấy một whe_value bằng nhau, thì điều khoản tương ứng thì fal kiện_list thực thi. - Nếu không có khi_value bằng nhau, câu lệnh khác sẽ thực thi, nếu có.
    - case_value is an expression.
    - This value is compared to the when_value expression in each WHEN clause until one of them is equal.
    - When an equal when_value is found, the corresponding THEN clause statement_list executes.
    - If no when_value is equal, the ELSE clause statement_list executes, if there is one.

    Giải thích: Cú pháp thứ hai- mỗi & nbsp; khi & nbsp; mệnh đề & nbsp; search_condition & nbsp; biểu thức được đánh giá cho đến khi một là đúng, tại điểm tương ứng của nó & nbsp; sau đó & nbsp; mệnh đề & nbsp; statement_list & nbsp; thực hiện. - nếu không & nbsp; search_condition & nbsp; là bằng nhau, mệnh đề & nbsp; khác & nbsp; statement_list & nbsp; thực thi, nếu có một. một trống & nbsp; statement_list & nbsp; không được phép.
    - Each WHEN clause search_condition expression is evaluated until one is true, at which point its corresponding THEN clause statement_list executes.
    - If no search_condition is equal, the ELSE clause statement_list executes, if there is one.
    - Each statement_list consists of one or more SQL statements; an empty statement_list is not permitted.

    Example:

    Chúng tôi có bảng gọi là 'công việc' với các hồ sơ sau:

    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | hr                 |
    | mysql              |
    | performance_schema |
    | sakila             |
    | test               |
    | world              |
    +--------------------+
    7 rows in set (0.06 sec))            
    
    6

    Bây giờ chúng tôi muốn đếm số lượng nhân viên có các điều kiện sau:

    - min_salary> 10000 - min_salary <10000 - min_salary = 10000
    - MIN_SALARY < 10000
    - MIN_SALARY = 10000

    Dưới đây là quy trình (quy trình được ghi vào MySQL Workbench 5.2 CE):

    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | hr                 |
    | mysql              |
    | performance_schema |
    | sakila             |
    | test               |
    | world              |
    +--------------------+
    7 rows in set (0.06 sec))            
    
    7

    Trong quy trình trên, chúng tôi vượt qua biến tiền lương (số tiền) thông qua tham số. Trong quy trình, có câu lệnh CASE cùng với hai khi và một câu khác sẽ kiểm tra điều kiện và trả về giá trị đếm trong số NO_EMployees. Hãy để thực hiện quy trình trong dấu nhắc lệnh MySQL:

    Số lượng nhân viên có mức lương lớn hơn 10000:

    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | hr                 |
    | mysql              |
    | performance_schema |
    | sakila             |
    | test               |
    | world              |
    +--------------------+
    7 rows in set (0.06 sec))            
    
    8

    Số lượng nhân viên có mức lương dưới 10000:

    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | hr                 |
    | mysql              |
    | performance_schema |
    | sakila             |
    | test               |
    | world              |
    +--------------------+
    7 rows in set (0.06 sec))            
    
    9

    Số lượng nhân viên có mức lương bằng 10000:

    mysql> USE hr;
    Database changed
    
    0

    MySQL: Tuyên bố lặp lại

    Lặp lại có nghĩa là "bắt đầu lại vòng lặp". Lặp lại chỉ có thể xuất hiện trong vòng lặp, lặp lại và trong khi các câu lệnh. Đây là cú pháp:

    mysql> USE hr;
    Database changed
    
    1

    MySQL: Câu lệnh Rời khỏi

    Tuyên bố Rời khỏi được sử dụng để thoát khỏi cấu trúc điều khiển dòng có nhãn đã cho. Nếu nhãn dành cho khối chương trình được lưu trữ ngoài cùng, & nbsp; Rời khỏi & nbsp; thoát khỏi chương trình. Rời khỏi & nbsp; có thể được sử dụng trong & nbsp; bắt đầu ... end & nbsp; hoặc các cấu trúc vòng lặp (vòng lặp, & nbsp; lặp lại, & nbsp; while). Đây là cú pháp:

    mysql> USE hr;
    Database changed
    
    2

    MySQL: Câu lệnh LOOP

    Vòng lặp được sử dụng để tạo lần thực hiện lặp đi lặp lại danh sách câu lệnh. Đây là cú pháp:

    mysql> USE hr;
    Database changed
    
    3

    Statement_list bao gồm một hoặc nhiều câu lệnh, mỗi câu chấm dứt bởi một dấu chấm phẩy (;). Các câu lệnh trong vòng lặp được lặp lại cho đến khi vòng lặp bị chấm dứt. Thông thường, câu lệnh Rời khỏi được sử dụng để thoát khỏi cấu trúc vòng lặp. Trong một hàm được lưu trữ, & nbsp; return & nbsp; cũng có thể được sử dụng, thoát hoàn toàn chức năng. Một tuyên bố vòng lặp có thể được dán nhãn.

    Example:

    Trong các hàng thủ tục sau sẽ được chèn vào bảng 'số' cho đến khi x nhỏ hơn số (số được cung cấp bởi người dùng thông qua tham số). Một số ngẫu nhiên sẽ được lưu trữ mỗi lần.

    mysql> USE hr;
    Database changed
    
    4

    Bây giờ thực hiện thủ tục:

    mysql> USE hr;
    Database changed
    
    5

    MySQL: Tuyên bố lặp lại

    Câu lệnh lặp lại thực hiện (các) câu lệnh liên tục miễn là điều kiện là đúng. Điều kiện được kiểm tra mỗi lần vào cuối các câu lệnh.

    mysql> USE hr;
    Database changed
    
    6

    Statement_list: Danh sách một hoặc nhiều câu lệnh, mỗi câu chấm dứt bởi một dấu chấm phẩy (;). search_condition: một biểu thức.
    search_condition : An expression.

    Một tuyên bố lặp lại có thể được dán nhãn.

    Example:

    Ngay cả các số là các số có thể được chia đều cho 2. Trong quy trình sau, người dùng chuyển một số qua tham số và tạo một tổng số số chẵn giữa 1 và số cụ thể đó.

    mysql> USE hr;
    Database changed
    
    7

    Bây giờ thực hiện thủ tục:

    mysql> USE hr;
    Database changed
    
    8

    Mysql: câu lệnh trả về

    Câu lệnh trả về chấm dứt thực thi hàm được lưu trữ và trả về giá trị expr cho người gọi hàm. Phải có ít nhất một câu lệnh trả về trong một hàm được lưu trữ. Có thể có nhiều hơn một nếu hàm có nhiều điểm thoát. Đây là cú pháp:

    mysql> USE hr;
    Database changed
    
    9

    Tuyên bố này không được sử dụng trong các thủ tục được lưu trữ hoặc kích hoạt. Tuyên bố nghỉ phép có thể được sử dụng để thoát khỏi một chương trình được lưu trữ của các loại đó.

    MySQL: Trong khi tuyên bố

    Câu lệnh trong khi thực hiện (các) câu lệnh miễn là điều kiện là đúng. Điều kiện được kiểm tra mỗi lần khi bắt đầu vòng lặp. Mỗi tuyên bố được chấm dứt bởi một dấu chấm phẩy (;). Đây là cú pháp:

    mysql> SHOW TABLES;
    +--------------+
    | Tables_in_hr |
    +--------------+
    | alluser      |
    | departments  |
    | emp_details  |
    | job_history  |
    | jobs         |
    | locations    |
    | regions      |
    | user         |
    | user_details |
    +--------------+
    9 rows in set (0.00 sec)
    
    0

    Một câu lệnh trong khi có thể được dán nhãn.

    Example:

    Các số lẻ là các số không thể được chia chính xác cho 2. Trong quy trình sau, người dùng truyền một số qua tham số và tạo một tổng số lẻ giữa 1 và số cụ thể đó.

    mysql> SHOW TABLES;
    +--------------+
    | Tables_in_hr |
    +--------------+
    | alluser      |
    | departments  |
    | emp_details  |
    | job_history  |
    | jobs         |
    | locations    |
    | regions      |
    | user         |
    | user_details |
    +--------------+
    9 rows in set (0.00 sec)
    
    1

    Bây giờ thực hiện thủ tục:

    mysql> SHOW TABLES;
    +--------------+
    | Tables_in_hr |
    +--------------+
    | alluser      |
    | departments  |
    | emp_details  |
    | job_history  |
    | jobs         |
    | locations    |
    | regions      |
    | user         |
    | user_details |
    +--------------+
    9 rows in set (0.00 sec)
    
    2
    mysql> SHOW TABLES;
    +--------------+
    | Tables_in_hr |
    +--------------+
    | alluser      |
    | departments  |
    | emp_details  |
    | job_history  |
    | jobs         |
    | locations    |
    | regions      |
    | user         |
    | user_details |
    +--------------+
    9 rows in set (0.00 sec)
    
    3

    Mysql: câu lệnh trả về

    Câu lệnh trả về chấm dứt thực thi hàm được lưu trữ và trả về giá trị expr cho người gọi hàm. Phải có ít nhất một câu lệnh trả về trong một hàm được lưu trữ. Có thể có nhiều hơn một nếu hàm có nhiều điểm thoát. Đây là cú pháp:

    mysql> SHOW TABLES;
    +--------------+
    | Tables_in_hr |
    +--------------+
    | alluser      |
    | departments  |
    | emp_details  |
    | job_history  |
    | jobs         |
    | locations    |
    | regions      |
    | user         |
    | user_details |
    +--------------+
    9 rows in set (0.00 sec)
    
    4

    Tuyên bố này không được sử dụng trong các thủ tục được lưu trữ hoặc kích hoạt. Tuyên bố nghỉ phép có thể được sử dụng để thoát khỏi một chương trình được lưu trữ của các loại đó.

    mysql> SHOW TABLES;
    +--------------+
    | Tables_in_hr |
    +--------------+
    | alluser      |
    | departments  |
    | emp_details  |
    | job_history  |
    | jobs         |
    | locations    |
    | regions      |
    | user         |
    | user_details |
    +--------------+
    9 rows in set (0.00 sec)
    
    5

    MySQL: Trong khi tuyên bố

    Câu lệnh trong khi thực hiện (các) câu lệnh miễn là điều kiện là đúng. Điều kiện được kiểm tra mỗi lần khi bắt đầu vòng lặp. Mỗi tuyên bố được chấm dứt bởi một dấu chấm phẩy (;). Đây là cú pháp:

    Một câu lệnh trong khi có thể được dán nhãn.

    mysql> SHOW TABLES;
    +--------------+
    | Tables_in_hr |
    +--------------+
    | alluser      |
    | departments  |
    | emp_details  |
    | job_history  |
    | jobs         |
    | locations    |
    | regions      |
    | user         |
    | user_details |
    +--------------+
    9 rows in set (0.00 sec)
    
    6

    Các số lẻ là các số không thể được chia chính xác cho 2. Trong quy trình sau, người dùng truyền một số qua tham số và tạo một tổng số lẻ giữa 1 và số cụ thể đó.

    mysql> SHOW TABLES;
    +--------------+
    | Tables_in_hr |
    +--------------+
    | alluser      |
    | departments  |
    | emp_details  |
    | job_history  |
    | jobs         |
    | locations    |
    | regions      |
    | user         |
    | user_details |
    +--------------+
    9 rows in set (0.00 sec)
    
    7

    MySQL: Trong khi tuyên bố

    Câu lệnh trong khi thực hiện (các) câu lệnh miễn là điều kiện là đúng. Điều kiện được kiểm tra mỗi lần khi bắt đầu vòng lặp. Mỗi tuyên bố được chấm dứt bởi một dấu chấm phẩy (;). Đây là cú pháp:

    Một câu lệnh trong khi có thể được dán nhãn.

    Các số lẻ là các số không thể được chia chính xác cho 2. Trong quy trình sau, người dùng truyền một số qua tham số và tạo một tổng số lẻ giữa 1 và số cụ thể đó.
    - Asensitive: The server may or may not make a copy of its result table
    - Read only: Not updatable
    - Nonscrollable: Can be traversed only in one direction and cannot skip rows

    MySQL: Thay đổi thủ tục
    - Declare a cursor.
    - Open a cursor.
    - Fetch the data into variables.
    - Close the cursor when done.

    Tuyên bố này có thể được sử dụng để thay đổi các đặc điểm của một thủ tục được lưu trữ. Nhiều thay đổi có thể được chỉ định trong một câu lệnh Quy trình thay đổi. Tuy nhiên, bạn không thể thay đổi các tham số hoặc phần thân của quy trình được lưu trữ bằng cách sử dụng câu lệnh này; Để thực hiện các thay đổi như vậy, bạn phải bỏ và tạo lại quy trình bằng thủ tục thả và tạo thủ tục. Đây là cú pháp:

    Bạn phải có đặc quyền thường xuyên thay đổi cho thủ tục. Theo mặc định, đặc quyền đó được cấp tự động cho người tạo thủ tục. Trong quy trình trước đây của chúng tôi "my_proc_while" phần bình luận trống rỗng. Để nhập nhận xét mới hoặc sửa đổi nhận xét trước đó, hãy sử dụng lệnh sau:

    mysql> SHOW TABLES;
    +--------------+
    | Tables_in_hr |
    +--------------+
    | alluser      |
    | departments  |
    | emp_details  |
    | job_history  |
    | jobs         |
    | locations    |
    | regions      |
    | user         |
    | user_details |
    +--------------+
    9 rows in set (0.00 sec)
    
    8

    Bạn có thể kiểm tra kết quả thông qua lệnh tạo quy trình tạo mà chúng tôi đã thảo luận trước đó.

    MySQL: Thủ tục thả

    mysql> SHOW TABLES;
    +--------------+
    | Tables_in_hr |
    +--------------+
    | alluser      |
    | departments  |
    | emp_details  |
    | job_history  |
    | jobs         |
    | locations    |
    | regions      |
    | user         |
    | user_details |
    +--------------+
    9 rows in set (0.00 sec)
    
    9

    Tuyên bố này được sử dụng để bỏ một quy trình hoặc chức năng được lưu trữ. Đó là, thói quen được chỉ định được xóa khỏi máy chủ. Bạn phải có đặc quyền thường xuyên thay đổi cho thói quen. .

    Điều khoản IF tồn tại là tiện ích mở rộng MySQL. Nó ngăn chặn một lỗi xảy ra nếu thủ tục hoặc chức năng không tồn tại. Một cảnh báo được tạo ra có thể được xem với cảnh báo chương trình. Đây là một ví dụ:

    mysql> DELIMITER $$ ;
    
    0

    Đóng con trỏ khi hoàn thành:

    Tuyên bố này đóng một con trỏ đã mở trước đó. Một lỗi xảy ra nếu con trỏ không mở.

    mysql> DELIMITER $$ ;
    
    1

    Example:

    Quy trình bắt đầu với ba khai báo biến. Ngẫu nhiên, thứ tự là quan trọng. Đầu tiên, khai báo các biến. Sau đó khai báo điều kiện. Sau đó tuyên bố con trỏ. Sau đó, tuyên bố xử lý. Nếu bạn đặt chúng theo thứ tự sai, bạn sẽ nhận được một thông báo lỗi.

    mysql> DELIMITER $$ ;
    
    2

    Bây giờ thực hiện thủ tục:

    mysql> DELIMITER $$ ;
    
    3

    Chúng tôi sẽ cung cấp nhiều ví dụ hơn về con trỏ sớm.

    Kiểm soát truy cập cho các chương trình được lưu trữ

    Các chương trình và chế độ xem được lưu trữ được xác định trước khi sử dụng và khi được tham chiếu, thực hiện trong bối cảnh bảo mật xác định các đặc quyền của họ. Các đặc quyền này được kiểm soát bởi thuộc tính Definer của chúng và, nếu có một, đặc tính bảo mật SQL của chúng. Tất cả các chương trình được lưu trữ (quy trình, chức năng và trình kích hoạt) và các chế độ xem có thể có thuộc tính Definer đặt tên cho tài khoản MySQL. Nếu thuộc tính Definer bị bỏ qua từ một chương trình được lưu trữ hoặc định nghĩa xem, tài khoản mặc định là người dùng tạo đối tượng.
    All stored programs (procedures, functions, and triggers) and views can have a DEFINER attribute that names a MySQL account. If the DEFINER attribute is omitted from a stored program or view definition, the default account is the user who creates the object.

    MySQL sử dụng các quy tắc sau để kiểm soát tài khoản nào người dùng có thể chỉ định trong thuộc tính Definer đối tượng:

    • Bạn có thể chỉ định một giá trị xác định khác ngoài tài khoản của chính bạn chỉ khi bạn có siêu đặc quyền.
    • Nếu bạn không có siêu đặc quyền, giá trị người dùng hợp pháp duy nhất là tài khoản của riêng bạn, được chỉ định theo nghĩa đen hoặc bằng cách sử dụng current_user. Bạn không thể đặt Definer thành một số tài khoản khác.
    • Đối với một thói quen được lưu trữ hoặc chế độ xem, hãy sử dụng SQL Security Invoker trong định nghĩa đối tượng khi có thể chỉ có thể được sử dụng bởi người dùng có quyền phù hợp cho các hoạt động được thực hiện bởi đối tượng.
    • Nếu bạn tạo các chương trình hoặc chế độ xem được lưu trữ trong bối cảnh xác định trong khi sử dụng tài khoản có siêu đặc quyền, hãy chỉ định thuộc tính Definer rõ ràng tên một tài khoản chỉ sở hữu các đặc quyền cần thiết cho các hoạt động được thực hiện bởi đối tượng. Chỉ định một tài khoản Definer rất đặc quyền khi thực sự cần thiết.
    • Quản trị viên có thể ngăn người dùng chỉ định các tài khoản Definer có đặc quyền cao bằng cách không cấp cho họ siêu đặc quyền.
    • Các đối tượng xác định mục đích nên được viết để ghi nhớ rằng chúng có thể truy cập dữ liệu mà người dùng gọi không có đặc quyền. Trong một số trường hợp, bạn có thể ngăn chặn tham chiếu đến các đối tượng này bằng cách không cấp cho người dùng trái phép các đặc quyền cụ thể:
    • Một quy trình hoặc chức năng được lưu trữ không thể được tham chiếu bởi người dùng không có đặc quyền thực thi cho nó.
    • Một chế độ xem không thể được tham chiếu bởi người dùng không có đặc quyền thích hợp cho nó (chọn chọn từ nó, chèn để chèn vào nó, v.v.).

    Tham khảo: Hướng dẫn sử dụng MySQL 5.6

    Trước: MySQL SubqueriesNext: MySQL kích hoạt MySQL Subqueries
    Next: MySQL Triggers

    Thủ tục được lưu trữ trong PHP là gì?

    Một quy trình được lưu trữ là một chương trình con được lưu trữ trong danh mục cơ sở dữ liệu. Các ứng dụng có thể gọi và thực hiện quy trình được lưu trữ. Câu lệnh SQL cuộc gọi được sử dụng để thực hiện một quy trình được lưu trữ. Tham số. Các thủ tục được lưu trữ có thể có các tham số trong, inout và out, tùy thuộc vào phiên bản MySQL.a subroutine stored in the database catalog. Applications can call and execute the stored procedure. The CALL SQL statement is used to execute a stored procedure. Parameter. Stored procedures can have IN , INOUT and OUT parameters, depending on the MySQL version.

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

    Để gọi một quy trình được lưu trữ từ ứng dụng PHP, bạn chuẩn bị và thực hiện câu lệnh CALL SQL.Quy trình mà bạn gọi có thể bao gồm các tham số đầu vào (IN), tham số đầu ra (ra) và tham số đầu vào và đầu ra (INOUT).prepare and execute an SQL CALL statement. The procedure that you call can include input parameters (IN), output parameters (OUT), and input and output parameters (INOUT).

    Quy trình được lưu trữ trong MySQL là gì?

    Một quy trình được lưu trữ là mã SQL đã chuẩn bị mà bạn có thể lưu, vì vậy mã có thể được sử dụng lại nhiều lần.Vì vậy, nếu bạn có một truy vấn SQL mà bạn viết nhiều lần, hãy lưu nó dưới dạng thủ tục được lưu trữ, và sau đó chỉ cần gọi nó để thực hiện nó.a prepared SQL code that you can save, so the code can be reused over and over again. So if you have an SQL query that you write over and over again, save it as a stored procedure, and then just call it to execute it.

    Thủ tục được lưu trữ và các loại của nó là gì?

    Quy trình được lưu trữ là một tập hợp tiền của một hoặc nhiều câu lệnh SQL được lưu trữ trên SQL Server.Lợi ích của các quy trình được lưu trữ là chúng được thực hiện ở phía máy chủ và thực hiện một tập hợp các hành động, trước khi trả kết quả cho phía máy khách.a precompiled set of one or more SQL statements that are stored on SQL Server. The benefit of Stored Procedures is that they are executed on the server-side and perform a set of actions, before returning the results to the client-side.