Hướng dẫn what are stored procedures called in mysql? - các thủ tục được lưu trữ được gọi là gì trong mysql?

13.2.1 & NBSP; Câu lệnh gọi

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

Tuyên bố CALL gọi một quy trình được lưu trữ được xác định trước đó với CREATE PROCEDURE.

Các thủ tục được lưu trữ không có đối số nào có thể được gọi mà không có dấu ngoặc đơn. Đó là, CALL p()CALL p là tương đương.

CALL có thể chuyển các giá trị trở lại cho người gọi bằng các tham số được khai báo là các tham số OUT hoặc

CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
0. Khi thủ tục trả về, một chương trình máy khách cũng có thể có được số lượng hàng bị ảnh hưởng cho câu lệnh cuối cùng được thực thi trong thói quen: ở cấp SQL, hãy gọi hàm
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
1; Từ API C, hãy gọi hàm
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
2.

Để biết thông tin về ảnh hưởng của các điều kiện chưa được xử lý đối với các tham số thủ tục, xem Phần & NBSP; 13.6.7.8, Xử lý điều kiện và ra các tham số hoặc ra các tham số.

Để lấy lại giá trị từ một thủ tục bằng tham số OUT hoặc

CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
0, hãy truyền tham số bằng biến người dùng, sau đó kiểm tra giá trị của biến sau khi thủ tục trả về. . Quy trình sau đây có tham số OUT mà quy trình đặt thành phiên bản máy chủ hiện tại và giá trị
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
0 mà quy trình tăng lên từ giá trị hiện tại của nó:

CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;

Trước khi gọi quy trình, khởi tạo biến sẽ được truyền dưới dạng tham số

CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
0. Sau khi gọi thủ tục, bạn có thể thấy rằng các giá trị của hai biến được đặt hoặc sửa đổi:

mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+

Trong các câu lệnh CALL được sử dụng với

mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+
2 và
mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+
3, các giữ chỗ có thể được sử dụng cho các tham số
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
5, OUT và các tham số
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
0. Các loại tham số này có thể được sử dụng như sau:

mysql> SET @increment = 10;
mysql> PREPARE s FROM 'CALL p(?, ?)';
mysql> EXECUTE s USING @version, @increment;
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+

Để viết các chương trình C sử dụng câu lệnh CALL SQL để thực hiện các quy trình được lưu trữ tạo ra các bộ kết quả, cờ

mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+
8 phải được bật. Điều này là do mỗi CALL trả về kết quả để chỉ ra trạng thái cuộc gọi, ngoài bất kỳ bộ kết quả nào có thể được trả về bởi các câu lệnh được thực thi trong quy trình.
mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+
8 cũng phải được bật nếu CALL được sử dụng để thực hiện bất kỳ quy trình được lưu trữ nào có chứa các câu lệnh đã chuẩn bị. Không thể xác định được khi một thủ tục như vậy được tải cho dù các câu lệnh đó tạo ra các bộ kết quả, vì vậy cần phải cho rằng họ làm như vậy.

mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+
8 có thể được bật khi bạn gọi
mysql> SET @increment = 10;
mysql> PREPARE s FROM 'CALL p(?, ?)';
mysql> EXECUTE s USING @version, @increment;
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+
3, rõ ràng bằng cách vượt qua cờ
mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+
8 hoặc hoàn toàn bằng cách vượt qua
mysql> SET @increment = 10;
mysql> PREPARE s FROM 'CALL p(?, ?)';
mysql> EXECUTE s USING @version, @increment;
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+
5 (cũng cho phép
mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+
8).
mysql> SET @increment = 10;
mysql> CALL p(@version, @increment);
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+
8 được bật theo mặc định.

Để xử lý kết quả của câu lệnh CALL được thực thi bằng cách sử dụng

mysql> SET @increment = 10;
mysql> PREPARE s FROM 'CALL p(?, ?)';
mysql> EXECUTE s USING @version, @increment;
mysql> SELECT @version, @increment;
+--------------------+------------+
| @version           | @increment |
+--------------------+------------+
| 8.0.3-rc-debug-log |         11 |
+--------------------+------------+
9 hoặc CALL0, hãy sử dụng một vòng lặp gọi CALL1 để xác định xem có nhiều kết quả hơn không. Ví dụ, xem hỗ trợ thực thi nhiều câu lệnh.

Các chương trình C có thể sử dụng giao diện đã chuẩn bị để thực hiện các câu lệnh CALL và truy cập các tham số OUT

CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
0. Điều này được thực hiện bằng cách xử lý kết quả của câu lệnh CALL bằng cách sử dụng vòng lặp gọi CALL6 để xác định xem có nhiều kết quả hơn không. Ví dụ, xem hỗ trợ câu lệnh gọi đã chuẩn bị. Các ngôn ngữ cung cấp giao diện MySQL có thể sử dụng các câu lệnh CALL được chuẩn bị để truy xuất trực tiếp các tham số thủ tục OUT
CREATE PROCEDURE p (OUT ver_param VARCHAR(25), INOUT incr_param INT)
BEGIN
  # Set value of OUT parameter
  SELECT VERSION() INTO ver_param;
  # Increment value of INOUT parameter
  SET incr_param = incr_param + 1;
END;
0.

Các thay đổi siêu dữ liệu đối với các đối tượng được đề cập bởi các chương trình được lưu trữ được phát hiện và gây ra tự động lặp lại các câu lệnh bị ảnh hưởng khi chương trình được thực hiện tiếp theo. Để biết thêm thông tin, hãy xem Phần & NBSP; 8.10.3, Bộ nhớ đệm của các câu lệnh đã chuẩn bị và các chương trình được lưu trữ.

Các thủ tục đượ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.

Quy trình được lưu trữ được gọi là như thế nào?

Bạn có thể gọi một thủ tục được lưu trữ SQL với thực thi, mở hoặc nhận câu lệnh;Trong mỗi trường hợp, bạn sử dụng Chỉ thị #SQL.Một quy trình được lưu trữ là một tập hợp các hướng dẫn cho cơ sở dữ liệu, giống như một hàm trong EGL.with the execute, open, or get statement; in each case, you use the #sql directive. A stored procedure is a set of instructions for a database, like a function in EGL.

Các thủ tục được lưu trữ trong MySQL ở đâu?

Các thủ tục lưu trữ được lưu trữ ở đâu?Các quy trình được lưu trữ được lưu trữ trong các bảng mysql.routines và mysql.parameter, là một phần của từ điển dữ liệu.mysql. routines and mysql. parameters tables, which are part of the data dictionary.

MySQL có thủ tục lưu trữ không?

MySQL hỗ trợ các thói quen được lưu trữ (quy trình và chức năng).Một thói quen được lưu trữ là một tập hợp các câu lệnh SQL có thể được lưu trữ trong máy chủ.Một khi điều này đã được thực hiện, khách hàng không cần phải tiếp tục phát hành lại các câu lệnh riêng lẻ nhưng thay vào đó có thể tham khảo thói quen được lưu trữ.. A stored routine is a set of SQL statements that can be stored in the server. Once this has been done, clients don't need to keep reissuing the individual statements but can refer to the stored routine instead.