SQL server 2000 sử dụng biến kiểu dữ liệu cursor phần 1

11 465 0
SQL server 2000   sử dụng biến kiểu dữ liệu cursor phần 1

Đ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

SQL Server 2000 : Sử dụng biến kiểu liệu Cursor – Phần Phần lớn sở liệu quan hệ thường làm việc liệu nhiều dòng mẫu tin, gọi mẫu tin Ví dụ lệnh SELECT kết trả nhiều dòng liệu dòng liệu Ngược lại số ngôn ngữ lập trình bên ứng dụng người lập trình thói quen xử lý tính toán liệu dòng riêng lẻ Để đáp ứng yêu cầu người lập trình, muốn làm việc dòng liệu thời điểm hành, Microsoft SQL Server tạo kiểu liệu kiểu cursor 1/- Khái niệm cursor : Bạn hình dung kiểu liệu cursor (kiểu trỏ) giống sổ danh bạ chứa thông tin liên lạc khách hàng giao dịch công ty Bằng cách dò tìm thủ công, bạn phải sử dụng đến mắt tay để tham chiếu đến tên khách hàng bất bỳ sổ danh bạ Bạn di chuyển lên, xuống qua trang để tìm khách hàng mong muốn, thời điểm hành tay mắt bạn đứng khách hàng mà Hoạt động kiểu liệu cursor Transaction-SQL hoàn toàn giống ví dụ minh họa Tuy nhiên, cursor có nhiều kiểu khác cho phép bạn chọn lựa để định nghĩa theo yêu cầu mà mong muốn Tùy thuộc vào kiểu cursor định nghĩa mà việc đọc cập nhật liệu có hiệu lực So sánh chế cursor mẫu tin 2/- Các bước sử dụng kiểu liệu cursor : Đối với kiểu liệu thông thường sau khai báo biến với kiểu liệu thích hợp, bạn phép gán giá trị cần lưu trữ vào bên biến Hoạt động biến kiểu liệu cursor hoàn toàn không đơn giản thế, để sử dụng biến kiểu liệu cursor, bạn phải thực cách thứ tự qua nhiều bước khác Chi tiết bước thực sử dụng biến kiểu liệu cursor Transaction-SQL Để làm việc với biến có kiểu cursor, bạn phải thực bước sau : • Định nghĩa biến kiểu cursor lệnh DECLARE • Sử dụng lệnh OPEN để mở cursor định nghĩa trước • Đọc xử lý dòng liệu bên cursor • Đóng cursor lại lệnh CLOSE DEALLOCATE 2.1/- Định nghĩa biến có kiểu cursor : Việc định nghĩa biến có kiểu cursor Transaction-SQL việc định đến dòng liệu có bên bảng liệu mà biến tham chiếu đến Thông thường lệnh định nghĩa biến có kiểu cursor bên định loại cursor cho mục đích sử dụng sau thuận tiện Cú pháp : Trong : • Tên cursor : tên biến kiểu cursor • Từ khóa LOCAL\GLOBAL : dùng định phạm vi hoạt động biến cursor cục (local) bên thủ tục, lô (batch) lệnh, trigger toàn cục (global) bên kết nối Một biến cursor có tính toàn cục phép tham chiếu thủ tục kết nối tạo biến cursor • Từ khóa FORWARD_ONLY : dùng định việc đọc liệu cursor theo chiều tới mà (duyệt từ mẫu tin đến mẫu tin cuối cùng) • Từ khóa SCROLL : dùng định việc đọc liệu cursor phép di chuyển tới lui, qua lại dòng mẫu tin bên cursor tùy thích • Từ khóa STATIC : dùng định liệu đọc bên cursor tĩnh Khi người dùng khác có thay đổi bên liệu gốc (base table) thay đổi không cập nhật tự động liệu cursor Bởi liệu cursor liệu bảng tạm hệ thống chép lưu trữ sở liệu tempdb hệ thống địng nghĩa cursor • Từ khóa DYNAMIC : dùng định liệu bên cursor động Khi việc cập nhật liệu bảng sở (base table) người dùng khác cập nhật tự động liệu cursor có kiểu DYNAMIC • Từ khóa KEYSET : có hoạt động gần giống với kiểu DYNAMIC, thay đổi liệu cột không khóa bảng sở người dùng khác cập nhật liệu cursor Tuy nhiên mẫu tin vừa thêm mẫu tin bị hủy bỏ người dùng khác không hiển thị liệu cursor có kiểu KEYSET • Từ khóa READ_ONLY : dùng định liệu bên cursor đọc nhằm hạn chế việc sửa đổi liệu bên cursor Khi khai báo cursor với kiểu liệu tĩnh (STATIC) liệu cursor xem đọc • Từ khóa SCROLL_LOCK : dùng định hệ thống Microsoft SQL Server tự động khóa dòng mẫu tin cần phải thay đổi giá trị bị hủy bỏ bên bảng nhằm đảm bảo hành động cập nhật luôn thành công • Câu lệnh SELECT : dùng để đến cột có bên bảng mà bạn cần đọc liệu Câu lệnh SELECT cursor chứa mệnh đề : INTO, COMPUTE, COMPUTE BY • Danh sách cột cập nhật : định danh sách tên cột phép thay đổi giá trị cursor Mặc định tất cột mệnh đề SELECT phép thay đổi giá trị liệu cursor đọc Ví dụ : Để định nghĩa biến cursor chứa toàn dòng liệu bên bảng VATTU, dòng liệu cursor cho phép cập nhật Bạn sử dụng lệnh khai báo biến cursor sau : Ví dụ : Để định nghĩa biến cursor chứa toàn dòng liệu bên bảng NHACC, liệu cursor phép đọc việc đọc liệu cursor theo chiều tới Bạn sử dụng lệnh khai báo biến cursor sau : Nhận xét : ví dụ trên, bạn bỏ từ khóa READ_ONLY thân từ khóa STATIC định nghĩa liệu cursor đọc Tuy nhiên bạn nên ghi nhớ ý nghĩa từ khóa riêng lẻ để định nghĩa liệu cursor với yêu cầu mà cần sử dụng 2.2/- Mở cursor : Để đọc dòng liệu bên cursor trước tiên bạn cần phải mở cursor lệnh OPEN Hoạt động bên lệnh thực hệ thống thực câu lệnh truy vấn SELECT định lệnh định nghĩa biến cursor trước Trong trường hợp bạn định nghĩa sử dụng cursor với kiểu STATIC KEYSET hệ thống tạo bảng tạm chứa liệu kết lệnh SELECT nằm sở liệu tempdb Cú pháp lệnh OPEN sau : Trong : • Tên cursor : tên biến kiểu cursor định nghĩa trước lệnh DECLARE Ví dụ : Để mở cursor định nghĩa ví dụ Bạn sử dụng lệnh OPEN sau : Hoặc SQL Server 2000 : Sử dụng biến kiểu liệu Cursor – Phần cuối Sau định nghĩa mở biến cursor, hành động mà bạn thường thực việc đọc xử lý liệu cursor Bạn sử dụng lệnh FETCH với từ khóa tương ứng để định việc đọc dòng liệu bên cursor theo thứ tự 2.3/- Đọc xử lý liệu cursor : Cú pháp : Trong : • Các từ khóa NEXT, PRIOR, FIRST, LAST : dùng để đọc liệu dòng liệu (next), dòng liệu phía trước (prior), dòng liệu (first), dòng liệu cuối (last) so với dòng liệu hành bên cursor Sau đọc liệu thành công, dòng liệu hành bị thay đổi dòng vừa đọc • Từ khóa ABSOLUTE : dùng để định liệu xác thứ n bên cursor Với n số nguyên dương dùng định việc đọc liệu dòng thứ n đếm từ dòng đầu tiên, với n số nguyên âm dùng định việc đọc liệu dòng thứ n đếm ngược từ dòng cuối trở lên • Từ khóa RELATIVE : dùng để định việc đọc liệu dòng tương đối so với dòng liệu hành Với n số nguyên dương âm để định việc đọc theo chiều tới lui so với dòng liệu hành • Tên cursor : tên biến kiểu cursor định nghĩa trước lệnh DECLARE • Danh sách biến : danh sách tên biến cục định nghĩa trước Các biến lưu trữ giá trị liệu đọc từ lệnh FETCH Minh họa việc đọc liệu theo thứ tự khác Trong trình đọc xử lý dòng liệu không đảm bảo luôn thành công có truy cập người dùng khác lý khác Do hệ thống Microsoft SQL Server cung cấp cho bạn biến hệ thống có tên @@FETCH_STATUS dùng để kiểm tra tình trạng đọc liệu thành công hay thất bại Giá trị biến trả việc đọc liệu thành công Ví dụ : Để đọc liệu cursor bảng VATTU lọc vật tư Tivi Bạn sử dụng lệnh sau : Kết trả : Nhận xét : ví dụ trên, có ghi bước thực sử dụng biến cursor nhằm giúp bạn dễ đọc, dễ hiểu Việc đọc liệu thực vòng lặp WHILE nhằm tìm tất vật tư Tivi, sử dụng điều kiện lặp @@FETCH_STATUS = để nói việc đọc liệu lệnh FETCH NEXt thành công tiếp tục lặp Hai lệnh cuối CLOSE DEALLOCATE dùng để đóng lại cursor sau đọc xử lý liệu xong Ví dụ : Để cập nhật giá trị liệu cho cột TGNHAP (trị giá nhập) bảng PNHAP cách duyệt qua phiếu nhập, tính trị giá nhập phiếu vào số lượng nhập đơn giá nhập vật tư bảng CTPNHAP, sau cập nhật vào cột TGNHAP Bạn sử dụng lệnh sau để thực hành động mô tả : Nhận xét : ví dụ trên, sử dụng vòng lặp WHILE mà điều kiện lặp = để định điều kiện so sánh vòng lặp luôn Do đó, bên vòng lặp bạn bắt buộc phải thoát khỏi vòng lặp lệnh BREAK điều kiện thoát việc đọc liệu bị lỗi (@@FETCH_STATUS 0) Ngoài việc cập nhật liệu lệnh UPDATE mà mệnh đề WHERE có sử dụng từ khóa CRRENT OF dùng để định việc cập nhật liệu dòng liệu hành cursor. 2.4/- Đóng cursor : Đây công việc sau cần phải thực sử dụng biến có kiểu cursor Thông thường để đóng cursor bạn phối hợp hai lệnh mô tả bên : Cú pháp : Trong : • Tên cursor : tên biến kiểu cursor định nghĩa mở trước Lệnh CLOSE thực hành động giải phóng dòng liệu tham chiếu bên biến cursor, bạn mở lại cursor mà không cần thiết phải định nghĩa lại biến cursor lệnh DECLARE Tuy nhiên việc đọc liệu không hợp lệ sau bạn lệnh CLOSE để đóng cursor Lệnh DEALLOCATE để giải phóng thật biến cursor khỏi nhớ Sau thực lệnh này, có lệnh tham chiếu đến tên cursor gây lỗi Sơ đồ minh họa bước thực sử dụng biến có kiểu liệu cursor : Tiện ích làm việc với cursor chúng cho phép bạn duyệt dòng liệu (giống đối tượng recordset ADO DAO ngôn ngữ lập trình Visual Basic), nhiên Microsft SQL Server khuyến cáo bạn không nên lạm dụng nhiều hành động cập nhật liệu cursor làm cho xử lý chậm Bằng chứng bạn tính toán giá trị cho cột trị giá nhập (TGNHAP) bảng PNHAP lệnh UPDATE thay phải sử dụng nhiều lệnh cho xử lý cursor Tóm lại, bạn sử dụng kiểu liệu cursor Transaction-SQL để giải vấn đề : • Microsoft SQL Server hệ quản trị sở liệu quan hệ (Relational DataBase Managament System) chúng chọn giải pháp làm việc mẫu tin • Kế tiếp cần giải vấn đề cập nhật liệu bạn luôn ưu tiên chọn hướng giải mẫu tin làm cho xử lý nhanh • Sau hướng giài theo kiểu cursor giải pháp sau để chọn lựa không giải pháp tốt [...]...• Kế tiếp khi cần giải quyết các vấn đề cập nhật dữ liệu thì bạn luôn luôn ưu tiên chọn ra các hướng giải quyết trên bộ các mẫu tin bởi vì khi đó sẽ làm cho các xử lý được nhanh hơn • Sau cùng các hướng giài quyết theo kiểu cursor chỉ là giải pháp sau cùng nhất để chọn lựa khi không còn giải pháp nào tốt hơn ... lệnh OPEN sau : Hoặc SQL Server 2000 : Sử dụng biến kiểu liệu Cursor – Phần cuối Sau định nghĩa mở biến cursor, hành động mà bạn thường thực việc đọc xử lý liệu cursor Bạn sử dụng lệnh FETCH với... kiểu liệu cursor hoàn toàn không đơn giản thế, để sử dụng biến kiểu liệu cursor, bạn phải thực cách thứ tự qua nhiều bước khác Chi tiết bước thực sử dụng biến kiểu liệu cursor Transaction -SQL. .. cursor mẫu tin 2/- Các bước sử dụng kiểu liệu cursor : Đối với kiểu liệu thông thường sau khai báo biến với kiểu liệu thích hợp, bạn phép gán giá trị cần lưu trữ vào bên biến Hoạt động biến kiểu

Ngày đăng: 03/12/2015, 16:46

Từ khóa liên quan

Mục lục

  • 1/- Khái niệm về cursor :

  • 2/- Các bước sử dụng kiểu dữ liệu cursor :

    • 2.1/- Định nghĩa biến có kiểu cursor :

    • 2.2/- Mở cursor :

    • 2.3/- Đọc và xử lý dữ liệu trong cursor :

    • 2.4/- Đóng cursor :

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

Tài liệu liên quan