Khi làm việc với con trỏ mysql bạn phải khai báo những gì?

Sau khi một con trỏ được khai báo, nó có thể được mở và đóng thường xuyên nếu cần. Sau khi mở, các thao tác tìm nạp có thể được thực hiện thường xuyên nếu cần

Tạo con trỏ

Con trỏ được tạo bằng cách sử dụng câu lệnh

OPEN ordernumbers;
2.
OPEN ordernumbers;
2 đặt tên cho con trỏ và lấy một câu lệnh
OPEN ordernumbers;
0, hoàn thành với
OPEN ordernumbers;
5 và các mệnh đề khác nếu cần. Ví dụ: câu lệnh này định nghĩa một con trỏ có tên là
OPEN ordernumbers;
6 bằng cách sử dụng câu lệnh
OPEN ordernumbers;
0 truy xuất tất cả các đơn đặt hàng

CREATE PROCEDURE processorders()
BEGIN
   DECLARE ordernumbers CURSOR
   FOR
   SELECT ordernum FROM orders;
END;

Thủ tục được lưu trữ này không làm được gì nhiều. Một câu lệnh

OPEN ordernumbers;
2 được sử dụng để xác định và đặt tên cho con trỏ trong trường hợp này là
OPEN ordernumbers;
6. Không có gì được thực hiện với con trỏ và ngay sau khi thủ tục được lưu trữ xử lý xong, nó sẽ không còn tồn tại (vì nó là cục bộ của chính thủ tục được lưu trữ)

Bây giờ con trỏ đã được xác định, nó đã sẵn sàng để mở

Mở và đóng con trỏ

Con trỏ được mở bằng câu lệnh

CLOSE ordernumbers;
0, như thế này

OPEN ordernumbers;

Khi câu lệnh

CLOSE ordernumbers;
1 được xử lý, truy vấn được thực thi và dữ liệu đã truy xuất được lưu trữ để duyệt và cuộn tiếp theo

Sau khi quá trình xử lý con trỏ hoàn tất, con trỏ sẽ được đóng lại bằng cách sử dụng câu lệnh

CLOSE ordernumbers;
2, như sau

CLOSE ordernumbers;

CLOSE ordernumbers;
2 giải phóng mọi bộ nhớ trong và tài nguyên được sử dụng bởi con trỏ và do đó, mọi con trỏ phải được đóng khi không còn cần thiết.

Sau khi đóng con trỏ, nó không thể được sử dụng lại mà không được mở lại. Tuy nhiên, một con trỏ không cần phải được khai báo lại để được sử dụng;

Nếu bạn không đóng con trỏ một cách rõ ràng, MySQL sẽ tự động đóng nó khi đạt đến câu lệnh

CLOSE ordernumbers;
5

Đây là phiên bản cập nhật của ví dụ trước

OPEN ordernumbers;
7

Thủ tục được lưu trữ này khai báo, mở và đóng một con trỏ. Tuy nhiên, không có gì được thực hiện với dữ liệu đã truy xuất

Sử dụng dữ liệu con trỏ

Sau khi con trỏ được mở, mỗi hàng có thể được truy cập riêng lẻ bằng cách sử dụng câu lệnh

CLOSE ordernumbers;
6.
CLOSE ordernumbers;
6 chỉ định những gì sẽ được truy xuất (các cột mong muốn) và nơi lưu trữ dữ liệu đã truy xuất. Nó cũng nâng cao con trỏ hàng bên trong con trỏ để câu lệnh
CLOSE ordernumbers;
6 tiếp theo sẽ truy xuất hàng tiếp theo (chứ không phải lặp đi lặp lại cùng một hàng)

Ví dụ đầu tiên truy xuất một hàng từ con trỏ (hàng đầu tiên)

OPEN ordernumbers;
1

Ở đây,

CLOSE ordernumbers;
6 được sử dụng để truy xuất cột
OPEN ordernumbers;
70 của hàng hiện tại (nó sẽ tự động bắt đầu ở hàng đầu tiên) vào một biến được khai báo cục bộ có tên là
OPEN ordernumbers;
71. Không có gì được thực hiện với dữ liệu đã truy xuất

Trong ví dụ tiếp theo, dữ liệu đã truy xuất được lặp từ hàng đầu tiên đến hàng cuối cùng

OPEN ordernumbers;
5

Giống như ví dụ trước, ví dụ này sử dụng

CLOSE ordernumbers;
6 để truy xuất
OPEN ordernumbers;
70 hiện tại vào một biến được khai báo có tên là
OPEN ordernumbers;
71. Không giống như ví dụ trước,
CLOSE ordernumbers;
6 ở đây nằm trong một
OPEN ordernumbers;
76 nên nó được lặp đi lặp lại cho đến khi
OPEN ordernumbers;
77 là đúng (như được chỉ định bởi
OPEN ordernumbers;
78). Để thực hiện công việc này, biến
OPEN ordernumbers;
77 được xác định bằng một
OPEN ordernumbers;
10 (false, not done). Vậy làm thế nào để
OPEN ordernumbers;
77 được đặt thành đúng khi thực hiện?

OPEN ordernumbers;
6

Câu lệnh này định nghĩa một mã

OPEN ordernumbers;
12 sẽ được thực thi khi một điều kiện xảy ra. Ở đây nó xác định rằng khi
OPEN ordernumbers;
13 xảy ra, thì
OPEN ordernumbers;
14. Và
OPEN ordernumbers;
13 là điều kiện không tìm thấy và vì vậy nó xảy ra khi
OPEN ordernumbers;
76 không thể tiếp tục vì không còn hàng nào để lặp qua.

OPEN ordernumbers;
17 Để biết danh sách đầy đủ các mã lỗi MySQL được sử dụng bởi MySQL 5, hãy xem
OPEN ordernumbers;
18

Có thứ tự cụ thể mà các câu lệnh

OPEN ordernumbers;
2, nếu được sử dụng, phải được ban hành. Các biến cục bộ được xác định bằng
OPEN ordernumbers;
2 phải được xác định trước bất kỳ con trỏ hoặc trình xử lý nào được xác định và các trình xử lý phải được xác định sau bất kỳ con trỏ nào. Việc không tuân theo trình tự này sẽ tạo ra thông báo lỗi

Nếu bạn gọi thủ tục được lưu trữ này, nó sẽ xác định các biến và một

OPEN ordernumbers;
12, xác định và mở một con trỏ, lặp lại qua tất cả các hàng rồi đóng con trỏ

Với chức năng này, giờ đây bạn có thể đặt bất kỳ xử lý cần thiết nào bên trong vòng lặp (sau câu lệnh

CLOSE ordernumbers;
6 và trước khi kết thúc vòng lặp)

Ngoài câu lệnh

OPEN ordernumbers;
76 được sử dụng ở đây, MySQL cũng hỗ trợ câu lệnh
OPEN ordernumbers;
54 có thể được sử dụng để lặp lại mã cho đến khi thoát khỏi
OPEN ordernumbers;
54 theo cách thủ công bằng cách sử dụng câu lệnh
OPEN ordernumbers;
56. Nói chung, cú pháp của câu lệnh
OPEN ordernumbers;
76 làm cho nó phù hợp hơn để lặp qua các con trỏ

Để kết hợp tất cả những điều này lại với nhau, đây là một bản sửa đổi nữa của thủ tục được lưu trữ mẫu của chúng tôi với con trỏ, lần này với một số xử lý thực tế của dữ liệu được tìm nạp

OPEN ordernumbers;
3

Trong ví dụ này, chúng tôi đã thêm một biến khác có tên là

OPEN ordernumbers;
58 (biến này sẽ lưu trữ tổng số cho mỗi đơn đặt hàng). Thủ tục được lưu trữ cũng nhanh chóng tạo một bảng mới (nếu nó không tồn tại) có tên là
OPEN ordernumbers;
59. Bảng này sẽ lưu trữ các kết quả được tạo bởi thủ tục được lưu trữ.
CLOSE ordernumbers;
6 tìm nạp từng
OPEN ordernumbers;
70 như đã làm trước đó, sau đó sử dụng
OPEN ordernumbers;
62 để thực hiện một thủ tục được lưu trữ khác (thủ tục mà chúng ta đã tạo trong hướng dẫn trước) để tính tổng số tiền có thuế cho mỗi đơn hàng (kết quả của thủ tục này được lưu trữ trong
OPEN ordernumbers;
58). Và cuối cùng,
OPEN ordernumbers;
64 được sử dụng để lưu số đơn hàng và tổng cộng cho mỗi đơn hàng.

Quy trình được lưu trữ này không trả về dữ liệu, nhưng nó tạo và điền vào một bảng khác mà sau đó có thể được xem bằng cách sử dụng câu lệnh

OPEN ordernumbers;
0 đơn giản

CREATE PROCEDURE processorders()
BEGIN
   DECLARE ordernumbers CURSOR
   FOR
   SELECT ordernum FROM orders;
END;
2
CREATE PROCEDURE processorders()
BEGIN
   DECLARE ordernumbers CURSOR
   FOR
   SELECT ordernum FROM orders;
END;
3

Và sau đó bạn có nó, một ví dụ hoạt động hoàn chỉnh về các thủ tục được lưu trữ, con trỏ, xử lý từng hàng và thậm chí .

Điều gì xảy ra khi chúng ta khai báo một con trỏ?

Con trỏ có thể được khai báo trong Bộ phận dữ liệu hoặc Bộ phận thủ tục của chương trình của bạn. Câu lệnh DECLARE CURSOR không tạo ra bất kỳ mã nào nhưng nếu một con trỏ được khai báo trong Bộ phận thủ tục, COBSQL sẽ tạo một điểm ngắt gỡ lỗi cho câu lệnh DECLARE CURSOR .

Câu truy vấn SQL nào được sử dụng để khai báo con trỏ?

CURSOR FOR SELECT truy vấn , nơi bạn sẽ khai báo một con trỏ và cũng xác định truy vấn liên quan đến (điền) con trỏ đó. Bạn sẽ MỞ con trỏ và FETCH NEXT từ con trỏ. Trong vòng lặp WHILE, bạn sẽ kiểm tra biến @@FETCH_STATUS (WHILE @@FETCH_STATUS = 0).

Con trỏ được sử dụng trong MySQL Thuộc tính của con trỏ MySQL là gì?

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.

Điều nào sau đây là bước đầu tiên trong việc sử dụng con trỏ?

KHAI BÁO tên_con trỏ CON TRỎ CHO câu lệnh CHỌN; MỞ − Tiếp theo, chúng ta cần mở con trỏ và nó có thể được mở bằng câu lệnh MỞ. Trên thực tế, câu lệnh MỞ khởi tạo tập kết quả cho con trỏ do đó chúng ta phải gọi câu lệnh MỞ trước khi tìm nạp các hàng từ tập kết quả.