Hàm trả về bảng MySQL

Trong MySQL, câu lệnh RETURN được sử dụng khi bạn muốn thoát khỏi một hàm và trả về kết quả của hàm. Nó cũng có thể được sử dụng để kết thúc một LOOP và sau đó thoát với kết quả

cú pháp

Cú pháp của câu lệnh RETURN trong MySQL là

RETURN result;

Tham số hoặc Đối số

resultKết quả trả về của hàm

Ghi chú

  • Câu lệnh RETURN có thể được sử dụng trong một hàm để tạo điểm thoát. Mỗi hàm bạn tạo trong MySQL phải có ít nhất một câu lệnh RETURN, mặc dù nó có thể có nhiều hơn một câu lệnh RETURN nếu có nhiều điểm thoát trong hàm
  • Câu lệnh RETURN cũng có thể được sử dụng để kết thúc một LOOP và sau đó thoát ra với kết quả của hàm

Ví dụ

Hãy xem một ví dụ cho thấy cách sử dụng câu lệnh RETURN trong MySQL

DELIMITER //

CREATE FUNCTION CalcIncome [ starting_value INT ]
RETURNS INT

BEGIN

   DECLARE income INT;

   SET income = 0;

   label1: LOOP
     SET income = income + starting_value;
     IF income < 3000 THEN
       ITERATE label1;
     END IF;
     LEAVE label1;
   END LOOP label1;

   RETURN income;

END; //

DELIMITER ;

Trong ví dụ RETURN này, hàm có tên CalcIncome sẽ thoát khi gặp câu lệnh RETURN và trả về giá trị được lưu trữ trong biến thu nhập như là kết quả của hàm

Bạn cũng có thể sử dụng câu lệnh RETURN để kết thúc vòng lặp có tên nhãn1. Ví dụ

DELIMITER //

CREATE FUNCTION CalcIncome [ starting_value INT ]
RETURNS INT

BEGIN

   DECLARE income INT;

   SET income = 0;

   label1: LOOP
     SET income = income + starting_value;
     IF income < 3000 THEN
       ITERATE label1;
     END IF;
     RETURN income;
   END LOOP label1;

   RETURN starting_value;

END; //

DELIMITER ;

Trong ví dụ RETURN này, chúng tôi sử dụng câu lệnh RETURN hai lần

Câu lệnh RETURN đầu tiên nằm trong câu lệnh LOOP và khi gặp sẽ thoát khỏi LOOP, thoát khỏi hàm và trả về giá trị được lưu trong biến gọi là income

Câu lệnh RETURN thứ hai được sử dụng ở cuối hàm để thoát khỏi hàm và trả về giá trị được lưu trữ trong biến started_value

Trước tiên, bạn phải tạo Bảng "bảng tạm thời" theo Tập dữ liệu đã chọn của mình. Gọi "sf_collect_order_details_id" theo cách sau


SELECT sf_collect_order_details_id[1];

Cuối cùng, nếu "sf_collect_order_details_id" trả về 1, thì bạn đã có sẵn Tập dữ liệu trong "temp_table". Vì vậy, bạn có thể truy xuất Tập dữ liệu của mình từ "temp_table". Trong ví dụ này, tôi đặt tiêu chí chọn Dữ liệu rất đơn giản. tốt hơn là sử dụng Chức năng được lưu trữ nếu bạn phải thực hiện một lựa chọn phức tạp

Các hàm được lưu trữ trong MySQL trả về một giá trị vô hướng và có thể được sử dụng trong câu lệnh SQL. Trong bài viết này, Robert Sheldon giải thích cách tạo và sử dụng chức năng được lưu trữ trong MySQL

Bài viết này là một phần trong loạt bài tiếp theo của Robert Sheldon về Học MySQL. Để xem tất cả 11 mục trong sê-ri, hãy nhấp vào đây

Trong ba phần trước của loạt bài này, tôi đã tập trung vào việc tạo các đối tượng cơ sở dữ liệu cơ bản mà bạn có thể sử dụng để bắt đầu với MySQL. Bạn đã học cách xây dựng cơ sở dữ liệu ban đầu, sau đó thêm bảng, dạng xem và thủ tục được lưu trữ. Trong bài viết này, tôi đề cập đến một loại đối tượng quan trọng hơn, hàm được lưu trữ, một thủ tục được lưu trữ trong cơ sở dữ liệu và có thể được gọi theo yêu cầu, tương tự như hàm vô hướng do người dùng định nghĩa trong SQL Server hoặc các hệ thống cơ sở dữ liệu khác

Các chức năng được lưu trữ hoạt động giống như các chức năng tích hợp sẵn của MySQL. Bạn có thể gọi một trong hai loại hàm trong một biểu thức, chẳng hạn như các hàm trong mệnh đề SELECT, WHERE hoặc ORDER BY của truy vấn. Ví dụ: bạn có thể sử dụng hàm dựng sẵn CAST trong mệnh đề SELECT để chuyển đổi một cột thành một kiểu dữ liệu khác, như trong CAST[plane_id AS CHAR]. Biểu thức chuyển cột plane_id [số nguyên] thành kiểu dữ liệu ký tự. Theo cách tương tự, bạn có thể sử dụng một hàm được lưu trữ trong biểu thức của mình, áp dụng logic của riêng bạn vào cột plane_id hoặc bất kỳ cột nào khác

Trước khi tôi tiếp tục với các hàm được lưu trữ, điều quan trọng cần lưu ý là có ba loại hàm MySQL khác nhau mà bạn có thể thêm ở cấp cơ sở dữ liệu hoặc máy chủ

  • chức năng lưu trữ. Các hàm mà bạn tạo dưới dạng các đối tượng cơ sở dữ liệu bằng cách sử dụng câu lệnh WHERE1 WHERE2
  • chức năng có thể tải. Các hàm được biên dịch dưới dạng tệp thư viện và sau đó được tải động vào máy chủ bằng cách chạy câu lệnh WHERE1 WHERE2
  • chức năng bản địa. Các chức năng được thêm vào máy chủ bằng cách sửa đổi mã nguồn MySQL và biên dịch nó thành mysqld

Bài viết này tập trung vào việc tạo các hàm được lưu trữ, có nhiều đặc điểm giống như các thủ tục được lưu trữ của MySQL. Trên thực tế, tôi đã cân nhắc viết về cả hai trong bài viết trước, nhưng tôi nghĩ rằng có đủ sự khác biệt giữa chúng để đảm bảo có một bài viết riêng. Nó cũng cung cấp một cách nhất quán hơn để giới thiệu từng loại đối tượng MySQL chính, ngay cả khi điều đó có nghĩa là lặp lại một số thông tin. Với suy nghĩ này, hãy bắt đầu với chức năng được lưu trữ

Chuẩn bị môi trường MySQL của bạn

Cũng như một số bài viết trước, các ví dụ trong bài viết này dựa trên cơ sở dữ liệu WHERE5. Nếu bạn đã cài đặt nó, bạn có thể bỏ qua phần này. Nếu không, bạn có thể bắt đầu bằng cách chạy tập lệnh SQL sau để tạo cơ sở dữ liệu và các bảng của nó

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

THẢI CƠ SỞ DỮ LIỆU NẾU TỒN TẠI du lịch;

TẠO CƠ SỞ DỮ LIỆU du lịch;

SỬ DỤNG du lịch;

TẠO BẢNG nhà sản xuất [

  manufacturer_id INT CHƯA KÝ KHÔNG NULL AUTO_INCREMENT,

  nhà sản xuất VARCHAR[50] NOT NULL,

  create_date DẤU THỜI GIAN NOT NULL DEFAULT CURRENT_TIMESTAMP,

  last_update DẤU THỜI GIAN NOT NULL

    MẶC ĐỊNH CURRENT_TIMESTAMP BẬT CẬP NHẬT CURRENT_TIMESTAMP,

  CHÍNH CHÍNH KEY [manufacturer_id] ]

ENGINE=InnoDB AUTO_INCREMENT=1001;

TẠO BẢNG máy bay [

  plane_id INT KHÔNG ĐƯỢC KÝ KHÔNG NULL AUTO_INCREMENT,

  máy bay VARCHAR[50] NOT NULL,

  manufacturer_id INT CHƯA KÝ KHÔNG NULL,

  engine_type VARCHAR[50] NOT NULL,

  engine_count TINYINT NOT NULL,

  max_weight VỪA KHÔNG ĐƯỢC KÝ KHÔNG NULL,

  sải cánh THẬP PHÂN[5,2] NOT NULL,

  plane_length DECIMAL[5,2] NOT NULL,

  parking_area INT ĐƯỢC TẠO LUÔN LUÔN AS

        [[sải cánh * plane_length]] STORED,

  icao_code CHAR[4] NOT NULL,

  create_date DẤU THỜI GIAN NOT NULL DEFAULT CURRENT_TIMESTAMP,

  last_update DẤU THỜI GIAN NOT NULL

    MẶC ĐỊNH CURRENT_TIMESTAMP BẬT CẬP NHẬT CURRENT_TIMESTAMP,

  CHÍNH CHÍNH KEY [plane_id],

  HÀNG CHẾ fk_manufacturer_id FOREIGN KEY [manufacturer_id]

    TÀI LIỆU THAM KHẢO nhà sản xuất [manufacturer_id] ]

ENGINE=InnoDB AUTO_INCREMENT=101;

Bảng WHERE6 bao gồm một khóa ngoại tham chiếu đến bảng WHERE7, vì vậy hãy đảm bảo tạo các bảng theo thứ tự hiển thị ở đây. Sau khi tạo bảng, bạn có thể thêm dữ liệu mẫu vào bảng để có thể kiểm tra chức năng của mình. Để điền vào các bảng, hãy chạy các câu lệnh WHERE8 sau

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

CHÈN VÀO nhà sản xuất [nhà sản xuất]

GIÁ TRỊ ['Airbus'],

Chủ Đề