Hướng dẫn create stored procedure mysql with parameters - tạo thủ tục mysql được lưu trữ với các tham số

Tóm tắt: Trong hướng dẫn này, bạn sẽ tìm hiểu cách tạo các quy trình được lưu trữ với các tham số, bao gồm các tham số

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
1,

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
2 và

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
3.
: in this tutorial, you will learn how to create stored procedures with parameters, including

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
1,

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
2, and

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
3 parameters.

Giới thiệu về các tham số thủ tục lưu trữ MySQL

Thông thường, các thủ tục lưu trữ có các tham số. Các tham số làm cho quy trình lưu trữ hữu ích và có thể tái sử dụng hơn. Một tham số trong một quy trình được lưu trữ có một trong ba chế độ: ____ 14, & nbsp; hoặc

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
5.

Các tham số DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;Code language: SQL (Structured Query Language) (sql)1

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
1 là chế độ mặc định. Khi bạn xác định tham số

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
1 trong quy trình được lưu trữ, chương trình gọi phải chuyển một đối số cho quy trình được lưu trữ.

Ngoài ra, giá trị của tham số

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
1 được bảo vệ. Điều đó có nghĩa là ngay cả bạn thay đổi giá trị của tham số

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
1 bên trong quy trình được lưu trữ, giá trị ban đầu của nó không thay đổi sau khi thủ tục được lưu trữ kết thúc. Nói cách khác, quy trình được lưu trữ chỉ hoạt động trên bản sao của tham số

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
1.

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;Code language: SQL (Structured Query Language) (sql)2 tham số

Giá trị của tham số

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
2 có thể được thay đổi bên trong quy trình được lưu trữ và giá trị mới của nó được chuyển trở lại chương trình gọi.

Lưu ý rằng quy trình được lưu trữ không thể truy cập giá trị ban đầu của tham số

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
2 khi bắt đầu.

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;Code language: SQL (Structured Query Language) (sql)5 tham số

Một tham số

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
5 & nbsp; là sự kết hợp của các tham số

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
1 và

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
2. Điều đó có nghĩa là chương trình gọi có thể chuyển đối số và quy trình được lưu trữ có thể sửa đổi tham số

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
5 và chuyển giá trị mới trở lại chương trình gọi.

Xác định một tham số

Dưới đây là cú pháp cơ bản của việc xác định tham số trong các quy trình được lưu trữ:

[IN | OUT | INOUT] parameter_name datatype[(length)]

Code language: SQL (Structured Query Language) (sql)

Trong cú pháp này,

  • Đầu tiên, chỉ định chế độ tham số, có thể là

    DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

    Code language: SQL (Structured Query Language) (sql)
    1,

    DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

    Code language: SQL (Structured Query Language) (sql)
    2 hoặc

    DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

    Code language: SQL (Structured Query Language) (sql)
    5 tùy thuộc vào mục đích của tham số trong quy trình được lưu trữ.
  • Thứ hai, chỉ định tên của tham số. Tên tham số phải tuân theo các quy tắc đặt tên của tên cột trong MySQL.
  • Thứ ba, chỉ định loại dữ liệu và độ dài tối đa của tham số.

Ví dụ tham số thủ tục lưu trữ MySQL

Hãy cùng lấy một số ví dụ về việc sử dụng các tham số thủ tục được lưu trữ.

Ví dụ trong tham số

Ví dụ sau đây tạo ra một thủ tục được lưu trữ tìm thấy tất cả các văn phòng định vị trong một quốc gia được chỉ định bởi tham số đầu vào

CALL GetOfficeByCountry('France')

Code language: SQL (Structured Query Language) (sql)
3:

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)

Trong ví dụ này,

CALL GetOfficeByCountry('France')

Code language: SQL (Structured Query Language) (sql)
3 là tham số

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
1 của quy trình được lưu trữ.

Giả sử rằng bạn muốn tìm văn phòng định vị ở Hoa Kỳ, bạn cần chuyển một đối số (

CALL GetOfficeByCountry('France')

Code language: SQL (Structured Query Language) (sql)
6) cho thủ tục được lưu trữ như trong truy vấn sau:

CALL GetOfficeByCountry('USA');

Code language: SQL (Structured Query Language) (sql)
Để tìm văn phòng trong

CALL GetOfficeByCountry('France')

Code language: SQL (Structured Query Language) (sql)
7, bạn chuyển chuỗi theo nghĩa đen

CALL GetOfficeByCountry('France')

Code language: SQL (Structured Query Language) (sql)
7 cho quy trình được lưu trữ ____ 39 & nbsp; như sau:
Hướng dẫn create stored procedure mysql with parameters - tạo thủ tục mysql được lưu trữ với các tham số

To find offices in

CALL GetOfficeByCountry('France')

Code language: SQL (Structured Query Language) (sql)
7, you pass the literal string

CALL GetOfficeByCountry('France')

Code language: SQL (Structured Query Language) (sql)
7 to the

CALL GetOfficeByCountry('France')

Code language: SQL (Structured Query Language) (sql)
9 stored procedure as follows:

CALL GetOfficeByCountry('France')

Code language: SQL (Structured Query Language) (sql)
BECOULOUS TUYỆT VỜI

CALL GetOfficeByCountry('France')

Code language: SQL (Structured Query Language) (sql)
3 là tham số

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
1, bạn phải chuyển một đối số. Nếu bạn không làm như vậy, bạn sẽ gặp lỗi:
Hướng dẫn create stored procedure mysql with parameters - tạo thủ tục mysql được lưu trữ với các tham số

Because the

CALL GetOfficeByCountry('France')

Code language: SQL (Structured Query Language) (sql)
3 is the

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
1 parameter, you must pass an argument. If you don’t do so, you’ll get an error:

CALL GetOfficeByCountry();

Code language: SQL (Structured Query Language) (sql)

Đây là lỗi:

Error Code: 1318. Incorrect number of arguments for PROCEDURE classicmodels.GetOfficeByCountry; expected 1, got 0

Code language: JavaScript (javascript)

Ví dụ tham số ra

Quy trình được lưu trữ sau đây trả về số lượng đơn đặt hàng theo trạng thái đặt hàng.

DELIMITER $$ CREATE PROCEDURE GetOrderCountByStatus ( IN orderStatus VARCHAR(25), OUT total INT ) BEGIN SELECT COUNT(orderNumber) INTO total FROM orders WHERE status = orderStatus; END$$ DELIMITER ;

Code language: SQL (Structured Query Language) (sql)

Quy trình được lưu trữ ________ 42 & nbsp; có hai tham số:

  • CALL GetOfficeByCountry();

    Code language: SQL (Structured Query Language) (sql)
    3: tham số

    DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

    Code language: SQL (Structured Query Language) (sql)
    1 chỉ định trạng thái của các đơn đặt hàng để trả về.

    CALL GetOfficeByCountry();

    Code language: SQL (Structured Query Language) (sql)
    3: is the

    DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

    Code language: SQL (Structured Query Language) (sql)
    1 parameter specifies the status of orders to return.
  • CALL GetOfficeByCountry();

    Code language: SQL (Structured Query Language) (sql)
    5: là tham số

    DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

    Code language: SQL (Structured Query Language) (sql)
    2 lưu trữ số lượng đơn đặt hàng trong một trạng thái cụ thể.

Để tìm số lượng đơn đặt hàng đã được vận chuyển, bạn gọi

CALL GetOfficeByCountry();

Code language: SQL (Structured Query Language) (sql)
7 và vượt qua trạng thái đơn hàng kể từ

CALL GetOfficeByCountry();

Code language: SQL (Structured Query Language) (sql)
8 và cũng vượt qua biến phiên (

CALL GetOfficeByCountry();

Code language: SQL (Structured Query Language) (sql)
9) để nhận giá trị trả lại.

CALL GetOrderCountByStatus('Shipped',@total); SELECT @total;

Code language: SQL (Structured Query Language) (sql)
Để nhận số lượng đơn đặt hàng trong quá trình, bạn gọi thủ tục được lưu trữ ____ 47 & nbsp; như sau:
Hướng dẫn create stored procedure mysql with parameters - tạo thủ tục mysql được lưu trữ với các tham số

To get the number of orders that are in-process, you call the stored procedure

CALL GetOfficeByCountry();

Code language: SQL (Structured Query Language) (sql)
7 as follows:

CALL GetOrderCountByStatus('in process',@total); SELECT @total AS total_in_process;

Code language: SQL (Structured Query Language) (sql)
Ví dụ tham số Inout
Hướng dẫn create stored procedure mysql with parameters - tạo thủ tục mysql được lưu trữ với các tham số

The INOUT parameter example

Ví dụ sau đây cho thấy cách sử dụng tham số & nbsp; ________ 15 trong quy trình được lưu trữ:

DELIMITER $$ CREATE PROCEDURE SetCounter( INOUT counter INT, IN inc INT ) BEGIN SET counter = counter + inc; END$$ DELIMITER ;

Code language: SQL (Structured Query Language) (sql)

Trong ví dụ này, quy trình được lưu trữ

Error Code: 1318. Incorrect number of arguments for PROCEDURE classicmodels.GetOfficeByCountry; expected 1, got 0

Code language: JavaScript (javascript)
2 chấp nhận một ____ 15 & nbsp; tham số (

Error Code: 1318. Incorrect number of arguments for PROCEDURE classicmodels.GetOfficeByCountry; expected 1, got 0

Code language: JavaScript (javascript)
4) và một tham số

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
1 (

Error Code: 1318. Incorrect number of arguments for PROCEDURE classicmodels.GetOfficeByCountry; expected 1, got 0

Code language: JavaScript (javascript)
6). Nó tăng bộ đếm (

Error Code: 1318. Incorrect number of arguments for PROCEDURE classicmodels.GetOfficeByCountry; expected 1, got 0

Code language: JavaScript (javascript)
4) theo giá trị được chỉ định bởi tham số

Error Code: 1318. Incorrect number of arguments for PROCEDURE classicmodels.GetOfficeByCountry; expected 1, got 0

Code language: JavaScript (javascript)
6.

Những tuyên bố này minh họa cách gọi thủ tục được lưu trữ ____ 59 & nbsp;

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
0

Đây là đầu ra:

Hướng dẫn create stored procedure mysql with parameters - tạo thủ tục mysql được lưu trữ với các tham số

Trong hướng dẫn này, bạn đã học được cách tạo các thủ tục được lưu trữ với các tham số bao gồm các tham số

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
1,

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
2 và

DELIMITER // CREATE PROCEDURE GetOfficeByCountry( IN countryName VARCHAR(255) ) BEGIN SELECT * FROM offices WHERE country = countryName; END // DELIMITER ;

Code language: SQL (Structured Query Language) (sql)
5.

Hướng dẫn này có hữu ích không?

Làm cách nào để tạo một thủ tục với các tham số trong MySQL?

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

Làm cách nào để thực hiện một quy trình được lưu trữ với các tham số trong MySQL?

Chúng ta hãy xem xét cách thực hiện quy trình được lưu trữ trong MySQL Workbench ...
Mở Workbench MySQL ..
Tạo tab mới để chạy các câu lệnh SQL.....
Nhập các câu lệnh SQL cho quy trình được lưu trữ trong tab mới của bạn ..
Thực hiện các câu lệnh Quy trình lưu trữ bằng cách nhấp vào biểu tượng 'Lightning' được hiển thị bên dưới ..

Một thủ tục được lưu trữ có thể sử dụng các tham số?

Các tham số được sử dụng để trao đổi dữ liệu giữa các quy trình và chức năng được lưu trữ và ứng dụng hoặc công cụ được gọi là quy trình hoặc chức năng được lưu trữ: Các tham số đầu vào cho phép người gọi chuyển giá trị dữ liệu cho quy trình hoặc hàm được lưu trữ.: Input parameters allow the caller to pass a data value to the stored procedure or function.

Làm cách nào để tạo một quy trình được lưu trữ trong MySQL?

Cú pháp sau được sử dụng để tạo quy trình được lưu trữ trong MySQL ...
Phân đoạn &&.
Tạo quy trình Quy trình_name [[in |Ra khỏi |Inout] Parameter_Name DataType [, tham số DataType])].
BEGIN..
Declaration_section..
Executable_section..
CHẤM DỨT &&.
Phân định;.