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 Show 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ả. |