Có con trỏ trong MySQL không?

Con trỏ là một câu lệnh CHỌN được xác định trong phần khai báo của chương trình được lưu trữ của bạn trong MySQL

cú pháp

Cú pháp khai báo con trỏ trong MySQL là

DECLARE cursor_name CURSOR FOR
  select_statement;

Tham số hoặc Đối số

cursor_nameTên để gán cho con trỏ. select_statementCâu lệnh SELECT kết hợp với con trỏ

Thí dụ

Hãy xem cách khai báo một con trỏ trong MySQL

Ví dụ

DECLARE c1 CURSOR FOR
  SELECT site_id
  FROM sites
  WHERE site_name = name_in;

Tập hợp kết quả của con trỏ này là tất cả các giá trị site_id trong đó site_name khớp với biến name_in

Biến con trỏ yêu cầu xác định để lặp lại tập kết quả được trả về bởi câu lệnh SELECT

2. mở con trỏ

MỞ tên_con_trỏ;

Con trỏ cần mở để trỏ đến điểm bắt đầu của tập kết quả

3. Lấy con trỏ

FETCH  cursor_name INTO variable_list;

Lệnh FETCH dùng để đọc các trường được định nghĩa trong truy vấn SELECT đã được sử dụng lúc khai báo con trỏ

4. Đóng con trỏ

ĐÓNG tên_con_trỏ;

Cần phải đóng con trỏ để đặt lại tập kết quả và xóa tham chiếu đến tập kết quả

điều kiện tiên quyết

Bạn phải tạo các bảng cần thiết với dữ liệu để biết cách sử dụng con trỏ trong MySQL. Mở terminal và chạy lệnh sau để kết nối với máy chủ MySQL nếu không có mật khẩu cho người dùng root

$ sudo mysql -u gốc

Chạy lệnh sau để chọn cơ sở dữ liệu

SỬ DỤNG test_db;

Chạy lệnh sau để tạo cơ sở dữ liệu có tên test_db

TẠO CƠ SỞ DỮ LIỆU test_db;

Chạy truy vấn sau để tạo bảng có tên sales_persons với bốn trường

TẠO BẢNG sales_persons[

id INT AUTO_INCREMENT PRIMARY KEY,

tên VARCHAR[30] KHÔNG NULL,

email VARCHAR[50],

contact_no VARCHAR[30]];

Chạy truy vấn sau để chèn ba bản ghi vào bảng sales_person

CHÈN VÀO `sales_persons` [`id`, `name`, `email`, `contact_no`] GIÁ TRỊ [NULL, 'Kamal Hasan', 'kamal@gmail. com', '0191275634'],

[NULL, 'Nila Hossain', 'nila@gmail. com', '01855342357'],

[NULL, 'Abir Hossain', 'abir@yahoo. com', '01634235698'];

Chạy truy vấn sau để tạo một bảng có tên là sales với bốn trường chứa khóa ngoại sẽ tạo mối quan hệ một-nhiều từ bảng sales_persons đến bảng sales

TẠO BẢNG bán hàng[

id INT KHÔNG NULL KHÓA CHÍNH,

sales_date NGÀY KHÔNG NULL,

số tiền INT,

sp_id int,

RÀNG BUỘC fk_sp NGOẠI KHÓA [sp_id]

THAM KHẢO sales_persons[id]

TRÊN CASCADE XÓA TRÊN CASCADE CẬP NHẬT];

Chạy truy vấn sau để chèn bốn bản ghi vào bảng bán hàng

CHÈN VÀO GIÁ TRỊ `doanh số` [`id`, `ngày_bán_hàng`, `số tiền`, `sp_id`]

['90', '2021-11-09', '800000', '1'],

['34', '2020-12-15', '5634555', '3'],

['67', '23-12-2021', '900000', '1'],

['56', '31-12-2020', '6700000', '1'];

Sử dụng con trỏ MySQL

Con trỏ chủ yếu được sử dụng trong thủ tục hoặc hàm MySQL có chứa một hoặc nhiều truy vấn chọn và con trỏ được khai báo sẽ lặp lại từng bản ghi của tập kết quả do truy vấn trả về. Tạo một hàm MySQL có tên Tính toán_Bonus với câu lệnh sau sẽ lấy một đối số nguyên và trả về một giá trị float. Truy vấn CHỌN đã được sử dụng trong hàm sẽ tính tổng số tiền bán hàng của từng nhân viên bán hàng và trả về tên của nhân viên bán hàng và tổng doanh số bán hàng trong tập kết quả. Chức năng của con trỏ là tính 15% tổng doanh số dưới dạng tiền thưởng nếu tổng số tiền bán hàng lớn hơn 10000; . Hàm sẽ trả về số tiền thưởng dựa trên giá trị id của nhân viên bán hàng. Chạy câu lệnh sau từ dấu nhắc MySQL sau khi chọn cơ sở dữ liệu để tạo hàm

PHÂN PHỐI //

CHỨC NĂNG TẠO `Tính toán_Bonus`[`spid` INT]

TRẢ LẠI VARCHAR[200]

ĐỌC DỮ LIỆU SQL

XÁC ĐỊNH

BẮT ĐẦU

KHAI BÁO thực hiện INT DEFAULT FALSE;

KHAI BÁO tổng INT MẶC ĐỊNH 0;

KHAI BÁO người VARCHAR[50] MẶC ĐỊNH "";

KHAI THÁC tiền thưởng INT MẶC ĐỊNH 0;

KHAI BÁO đầu ra VARCHAR[200];

KHAI BÁO CU CURSOR FOR

CHỌN tên, SUM[số tiền]

TỪ bán hàng, sales_persons

NƠI sales_persons. id=bán hàng. sp_id và sp_id = spid

NHÓM Theo sp_id;

KHAI BÁO TIẾP TỤC XỬ LÝ CHO KHÔNG TÌM SET done = TRUE;

MỞ cur;

FETCH cur INTO người, tổng số;

NẾU tổng > 10000 THÌ

SET tiền thưởng = tổng*0. 15;

KHÁC

SET tiền thưởng = tổng*0. 10;

KẾT THÚC NẾU;

SET đầu ra = CONCAT["Tiền thưởng của ", người," là TK. ", thưởng, ". "];

ĐÓNG CỬA;

TRẢ LẠI đầu ra;

KẾT THÚC;

//

Chạy truy vấn sau để đọc tất cả các bản ghi của bảng sales_persons

CHỌN * TỪ sales_persons;

Chạy truy vấn sau để đọc tất cả các bản ghi của bảng bán hàng

CHỌN * TỪ bán hàng;

Chạy truy vấn sau để gọi hàm Tính toán_Bonus[] của MySQL với giá trị đối số là 1. Theo bảng bán hàng, có ba bản ghi cho nhân viên bán hàng có id là 1. Vì vậy, tiền thưởng sẽ giảm 15% [6700000+900000+800000]

CHỌN Tính_Thưởng [1];

Chạy truy vấn sau để gọi hàm Tính toán_Bonus[] của MySQL với giá trị đối số là 2. Theo bảng bán hàng, không có bản ghi nào cho nhân viên bán hàng có id là 2. Vì vậy, tiền thưởng sẽ là 0

CHỌN Tính_Thưởng [2];

Chạy truy vấn sau để gọi hàm Tính toán_Bonus[] của MySQL với giá trị đối số là 3. Theo bảng bán hàng, có một bản ghi cho nhân viên bán hàng có id là 3. Vì vậy, tiền thưởng sẽ là 15% của 5634555

CHỌN Tính_Thưởng [3];

Phần kết luận

Con trỏ MySQL làm cho tác vụ cụ thể dễ dàng hơn bằng cách lặp lại từng hàng của bảng. Con trỏ MySQL đã được hiển thị trong hướng dẫn này bằng cách sử dụng chức năng MySQL. Con trỏ MySQL cũng có thể được sử dụng trong thủ tục MySQL. Tôi hy vọng khái niệm về con trỏ MySQL sẽ bị xóa đối với người dùng và người dùng sẽ có thể sử dụng con trỏ sau khi đọc hướng dẫn này

Làm cách nào để chạy con trỏ trong MySQL?

Khai báo con trỏ sử dụng câu lệnh DECLARE
Khai báo biến và điều kiện
Mở con trỏ đã khai báo bằng câu lệnh OPEN
Truy xuất các bản ghi mong muốn từ một bảng bằng Câu lệnh FETCH
Cuối cùng đóng con trỏ bằng câu lệnh CLOSE

Tại sao con trỏ được sử dụng trong MySQL?

Trong MySQL, con trỏ cho phép xử lý tập kết quả theo từng hàng . Một con trỏ được sử dụng cho tập hợp kết quả và được trả về từ một truy vấn. Bằng cách sử dụng con trỏ, bạn có thể lặp lại hoặc duyệt qua các kết quả của truy vấn và thực hiện các thao tác nhất định trên mỗi hàng.

Chúng ta có thể sử dụng con trỏ trong SQL không?

Để sử dụng con trỏ trong thủ tục SQL, bạn cần làm như sau. Khai báo con trỏ xác định tập kết quả. Mở con trỏ để thiết lập tập kết quả. Tìm nạp dữ liệu vào các biến cục bộ khi cần từ con trỏ, mỗi lần một hàng

Có bao nhiêu loại con trỏ trong MySQL?

2 loại Con trỏ. Con trỏ tiềm ẩn và con trỏ rõ ràng.

Chủ Đề