Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách gọi stored procedure trong MySQL

MySQL **không hỗ trợ** SELECT * FROM CALL proc() hay SELECT * FROM proc() trong mệnh đề FROM. Cách chuẩn: dùng CALL để thực thi, sau đó SELECT dữ liệu từ bảng nếu procedure làm thay đổi dữ liệu.

Ví dụ minh họa

Tạo bảng:

CREATE TABLE DemoTable2 (
    CustomerId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    CustomerName VARCHAR(100),
    ShippingDateTime DATETIME
);

Tạo procedure INSERT:

DELIMITER //
CREATE PROCEDURE insert_information(IN Name VARCHAR(100), IN shippingtime DATETIME)
BEGIN
    INSERT INTO DemoTable2 (CustomerName, ShippingDateTime) VALUES (Name, shippingtime);
END //
DELIMITER ;

Gọi procedure:

CALL insert_information('Chris', NOW());

Truy vấn dữ liệu sau khi gọi:

SELECT * FROM DemoTable2;

Kết quả:

+------------+--------------+---------------------+
| CustomerId | CustomerName | ShippingDateTime    |
+------------+--------------+---------------------+
| 1          | Chris        | 2019-04-08 15:03:07 |
+------------+--------------+---------------------+

Lưu ý:

  • Procedure có thể có tham số IN, OUT, INOUT.
  • Để lấy giá trị trả về từ procedure, dùng tham số OUT hoặc biến session @var (xem bài trước).
  • MySQL 8.0+ hỗ trợ RETURNING clause cho INSERT (không liên quan đến procedure).