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 ; DELIMITER //
CREATE PROCEDURE GetOfficeByCountry(
IN countryName VARCHAR(255)
)
BEGIN
SELECT *
FROM offices
WHERE country = countryName;
END //
DELIMITER ; DELIMITER //
CREATE PROCEDURE GetOfficeByCountry(
IN countryName VARCHAR(255)
)
BEGIN
SELECT *
FROM offices
WHERE country = countryName;
END //
DELIMITER ;
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, andDELIMITER // 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)1DELIMITER // 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ặcDELIMITER // 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 trongCALL GetOfficeByCountry('France')
Code language: SQL (Structured Query Language) (sql)7, bạn chuyển chuỗi theo nghĩa đenCALL GetOfficeByCountry('France')
Code language: SQL (Structured Query Language) (sql)7 cho quy trình được lưu trữ ____ 39 & nbsp; như sau:To find offices in
CALL GetOfficeByCountry('France')
Code language: SQL (Structured Query Language) (sql)7, you pass the literal stringCALL GetOfficeByCountry('France')
Code language: SQL (Structured Query Language) (sql)7 to theCALL 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ỜICALL 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:Because the
CALL GetOfficeByCountry('France')
Code language: SQL (Structured Query Language) (sql)3 is theDELIMITER // 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 theDELIMITER // 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: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ố InoutThe 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:
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?