Bài giảng điện tử môn tin học: Cursor ppsx

30 254 1
Bài giảng điện tử môn tin học: Cursor ppsx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 CURSOR 13 13 2 1. Khái niệm: 1. Khái niệm: Cursor Cursor là một đối tượng của CSDL mà nó hỗ trợ cho là một đối tượng của CSDL mà nó hỗ trợ cho phép truy xuất và thao tác dữ liệu trong một tập kết phép truy xuất và thao tác dữ liệu trong một tập kết quả. Sau khi quả. Sau khi cursor cursor được định vị trên một dòng, các được định vị trên một dòng, các hoạt động có thể thực hiện trên dòng đó. hoạt động có thể thực hiện trên dòng đó. Dùng Cursor để: Dùng Cursor để: • • Định vị một dòng đặc biệt trong tập kết quả. Định vị một dòng đặc biệt trong tập kết quả. • • Truy xuất một hoặc khối dòng bắt đầu từ vị trí Truy xuất một hoặc khối dòng bắt đầu từ vị trí cursor trong tập kết quả. cursor trong tập kết quả. • • Cung cấp thao tác hiệu chỉnh dữ liệu cho các dòng tại Cung cấp thao tác hiệu chỉnh dữ liệu cho các dòng tại vị trí của vị trí của Cursor Cursor trong tập kết quả. trong tập kết quả. • • Cung cấp các mức độ khác nhau của tính tường Cung cấp các mức độ khác nhau của tính tường minh trong sự thay đổi đước tạo bởi những người minh trong sự thay đổi đước tạo bởi những người dùng khác đến tập kết quả. dùng khác đến tập kết quả. 3 Khi sử dụng cursor trong SQL Server: Khi sử dụng cursor trong SQL Server: • • Cursor cần phải khai báo và các thuộc tính của Cursor cần phải khai báo và các thuộc tính của nó cũng cần được xác định nó cũng cần được xác định • • Mở Mở cursor cursor . . • • Phải lấy ( Phải lấy ( fetch fetch ) các dòng cần thiết từ ) các dòng cần thiết từ cursor cursor . . • • Dữ liệu trong dòng hiện hành có thể được hiệu Dữ liệu trong dòng hiện hành có thể được hiệu chỉnh nếu cần thiết. chỉnh nếu cần thiết. • • Tạm thời không dùng cursor thì phải đóng cursor Tạm thời không dùng cursor thì phải đóng cursor lại. lại. • • Cursor cần phải được giải phóng khi không cần Cursor cần phải được giải phóng khi không cần dùng nữa. dùng nữa. 4 2. Phân Loại Cursor: 2. Phân Loại Cursor: a. Static Cursor: a. Static Cursor: • • Tập kết quả của con trỏ loại Static được xây dựng Tập kết quả của con trỏ loại Static được xây dựng trong trong tempdb tempdb khi con trỏ được mở. khi con trỏ được mở. • • Con trỏ không phản ánh được bất kỳ sự thay đổi Con trỏ không phản ánh được bất kỳ sự thay đổi nào trong database ngay cả khi những dòng dữ nào trong database ngay cả khi những dòng dữ liệu có thay đổi. liệu có thay đổi. • • Tất cả t Tất cả t hao tác hao tác Insert Insert , , Update Update , , Delete Delete đều không đều không có tác dụng khi dùng có tác dụng khi dùng static cursor static cursor 5 b. Keyset-driven Cursor: b. Keyset-driven Cursor: • • Thành viên và thứ tự của các dòng trong một Thành viên và thứ tự của các dòng trong một keyset-driven cursor keyset-driven cursor là cố định khi cursor được là cố định khi cursor được mở. Con trỏ được điều khiển bởi một tập giá trị mở. Con trỏ được điều khiển bởi một tập giá trị nhận dạng gọi là nhận dạng gọi là Keyset Keyset . Keyset được xây dựng . Keyset được xây dựng trong trong Tempdb Tempdb khi con trỏ được mở. khi con trỏ được mở. • • Cho phép hiệu chỉnh ( Cho phép hiệu chỉnh ( update update , , delete delete ) dữ liệu trên ) dữ liệu trên cột không là keyset (bởi chủ cursor hoặc từ user cột không là keyset (bởi chủ cursor hoặc từ user khác) khi user duyệt thông qua con trỏ. khác) khi user duyệt thông qua con trỏ. • • Inserts made by other users are not visible. Inserts made by other users are not visible. 6 c. Dynamic Cursor: c. Dynamic Cursor: • • Cursor Cursor phản ánh được toàn bộ sự thay đổi của phản ánh được toàn bộ sự thay đổi của các dòng dữ liệu trong tập kết quả khi duyệt các dòng dữ liệu trong tập kết quả khi duyệt Cursor Cursor • • Giá trị dữ liệu, thứ tự, và thành viên của các Giá trị dữ liệu, thứ tự, và thành viên của các dòng trong tập kết quả có thể thay đổi ứng với dòng trong tập kết quả có thể thay đổi ứng với mỗi lần duyệt con trỏ. mỗi lần duyệt con trỏ. • • Tất cả các lệnh Tất cả các lệnh Insert, Update, Delete Insert, Update, Delete của các của các user đều hữu hiệu thông qua con trỏ. user đều hữu hiệu thông qua con trỏ. d. Fast Forward Cursor: d. Fast Forward Cursor: Chỉ duyệt con trỏ theo một chiều từ Chỉ duyệt con trỏ theo một chiều từ First First   Last Last 7  13.2 Làm việc với T-SQL server cursors 13.2 Làm việc với T-SQL server cursors Khai báo cursor Khai báo cursor Bằng câu lệnh declare ở sau từ khóa Bằng câu lệnh declare ở sau từ khóa AS trong stored procedures hoặc functions AS trong stored procedures hoặc functions DECLARE DECLARE cursor_name cursor_name CURSOR CURSOR [LOCAL | GLOBAL] [LOCAL | GLOBAL] [FORWARD_ONLY | SCROLL] [FORWARD_ONLY | SCROLL] [STATIC | KEYSET | DYNAMIC |FAST_FORWARD] [STATIC | KEYSET | DYNAMIC |FAST_FORWARD] [READ_ONLY | SCROLL_LOCKS | OPTIMISTIC] [READ_ONLY | SCROLL_LOCKS | OPTIMISTIC] FOR FOR select_statement select_statement [ [ FOR UPDATE FOR UPDATE [OF column_name [,…n]]] [OF column_name [,…n]]] 8 Ghi chú: Ghi chú: • • Select_statement: Select_statement: Là câu lệnh truy vấn để định Là câu lệnh truy vấn để định nghĩa tập kết quả của cursor. Từ khóa nghĩa tập kết quả của cursor. Từ khóa COMPUTE COMPUTE , , COMPUTE BY COMPUTE BY , FOR BROWSE, , FOR BROWSE, and and INTO INTO không cho phép trong select_statement không cho phép trong select_statement • • READ ONLY READ ONLY không cho phép Update trong không cho phép Update trong cursor này. cursor này. • • UPDATE UPDATE [OF [OF column_name column_name [,…n]]: [,…n]]: Quy định Quy định cột cho phép được cột cho phép được update update khi dùng cursor. Nếu khi dùng cursor. Nếu OF column_name OF column_name [,n…] được chỉ định rõ ràng thì [,n…] được chỉ định rõ ràng thì chỉ có các cột được chỉ định mới được cho phép chỉ có các cột được chỉ định mới được cho phép hiệu chỉnh, nếu không có column list, hiệu chỉnh, nếu không có column list, all columns all columns có thể update. có thể update. 9  Mở cursor: Mở cursor: Cursor được open sau khai báo Cursor được open sau khai báo OPEN OPEN {cursor_name} {cursor_name}  Lấy mẫu tin hoặc điều hướng cursor (FETCH) Lấy mẫu tin hoặc điều hướng cursor (FETCH) FETCH FETCH [ [ [ [ NEXT | PRIOR | FIRST | LAST | NEXT | PRIOR | FIRST | LAST | ABSOLUTE ABSOLUTE n n | REALTIVE | REALTIVE n ] n ] ] ] FROM FROM cursor_name cursor_name [ [ INTO INTO @variable_name @variable_name [,…n]] [,…n]]  Truy xuất từng dòng dữ liệu. Kiểm tra phạm vi con Truy xuất từng dòng dữ liệu. Kiểm tra phạm vi con trỏ bằng trỏ bằng @@Fetch_status @@Fetch_status @@fetch_status: @@fetch_status: Trả về Trả về 1 con trỏ 1 con trỏ đã được dời qua đã được dời qua LAST. LAST. Trả về 0 Trả về 0 vẫn còn trong phạm vi duyệt con trỏ. vẫn còn trong phạm vi duyệt con trỏ. vòng lặp vòng lặp While While để duyệt cả tập kết quả của Cursor để duyệt cả tập kết quả của Cursor  INTO INTO @variable_name @variable_name [, [, n n ]: ]: Allows data from the Allows data from the columns of a fetch to be placed into local variables columns of a fetch to be placed into local variables 10  Có thể dùng các câu lệnh Có thể dùng các câu lệnh Update Update hoặc hoặc Delete Delete để hiệu để hiệu chỉnh dữ liệu. chỉnh dữ liệu.  Sử dụng dữ liệu của mẫu tin hiện hành: Dữ liệu gán Sử dụng dữ liệu của mẫu tin hiện hành: Dữ liệu gán cho các biến tương ứng trong câu lệnh cho các biến tương ứng trong câu lệnh Fetch Fetch  Cập nhật dữ liệu thông qua Cập nhật dữ liệu thông qua cursor cursor : Thực chất là dữ : Thực chất là dữ liệu được hiệu chỉnh trực tiếp vào trong bảng. liệu được hiệu chỉnh trực tiếp vào trong bảng.  Cập nhật giá trị cho cột Cập nhật giá trị cho cột UPDATE UPDATE <Table_Name> <Table_Name> SET SET <Column_Name> = <Value> [,…n] <Column_Name> = <Value> [,…n] WHERE CURRENT OF WHERE CURRENT OF <Cur_Name> <Cur_Name>  Xóa dữ liệu thông qua cursor: Thực sự là dữ liệu xóa Xóa dữ liệu thông qua cursor: Thực sự là dữ liệu xóa trên bảng trên bảng DELETE DELETE <Ten Table> <Ten Table> WHERE CURRENT WHERE CURRENT OF OF <Cur_name> <Cur_name> [...]...Đóng Cursor Kết thúc hành động của cursor cho lần mở (open), nó vẫn hiện hữu cho đến khi gặp một lệnh Open khác hoặc gặp lệnh Close cursor CLOSE cursor_ name Giải phóng Cursor Giải phóng cursor, hủy bỏ tham chiếu đến con trỏ từ session hiện hành Tiến trình này làm cho tài nguyên trở về trạng thái sẵn sàng truy xuất DEALLOCATE cursor_ name 11 DECLARE contro CURSOR FOR Select mahang,... MyCursor CURSOR FOR Select c.CustomerId, c.CompanyName, o.OrderID, o.OrderDate From Customers c Inner Join Orders o ON c.CustomerID = o.CustomerID FOR UPDATE OPEN MyCursor Declare @cid varchar (8), @cn varchar(80), @o int, @od datetime FETCH NEXT FROM MyCursor INTO @cid, @cn, @o, @od Select @cid, @cn Begin TRANSACTION Update Customers SET CompanyName = 'q' Where Current Of MyCursor Deallocate MyCursor . update. 9  Mở cursor: Mở cursor: Cursor được open sau khai báo Cursor được open sau khai báo OPEN OPEN {cursor_ name} {cursor_ name}  Lấy mẫu tin hoặc điều hướng cursor (FETCH) Lấy mẫu tin hoặc. lệnh Close cursor. hoặc gặp lệnh Close cursor. CLOSE CLOSE cursor_ name cursor_ name  Giải phóng Cursor Giải phóng Cursor Giải phóng cursor, hủy bỏ tham chiếu đến con trỏ từ Giải phóng cursor, . thiết. • • Tạm thời không dùng cursor thì phải đóng cursor Tạm thời không dùng cursor thì phải đóng cursor lại. lại. • • Cursor cần phải được giải phóng khi không cần Cursor cần phải được giải

Ngày đăng: 11/08/2014, 22:22

Từ khóa liên quan

Mục lục

  • CURSOR

  • Slide 2

  • Slide 3

  • Slide 4

  • Slide 5

  • Slide 6

  • Slide 7

  • Slide 8

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • TRIGGER

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan