Mục lục:
Video: Cách lấy dữ liệu từ file excel này sang file excel khác 2025
Con trỏ cho phép SQL lấy (hoặc cập nhật, hoặc xóa) một hàng một lần để bạn có thể sử dụng SQL kết hợp với ứng dụng được viết bằng bất kỳ ngôn ngữ phổ biến nào. Xử lý con trỏ là một quy trình ba bước:
-
Câu lệnh DECLARE CURSOR chỉ định tên và phạm vi của con trỏ.
-
Câu lệnh OPEN thu thập các hàng của bảng được chọn bởi biểu thức truy vấn DECLARE CURSOR.
-
Câu lệnh FETCH thực sự truy xuất dữ liệu.
Con trỏ có thể trỏ đến một trong các hàng trong phạm vi của con trỏ, hoặc đến vị trí ngay trước hàng đầu tiên trong phạm vi, hoặc tới vị trí ngay sau dòng cuối cùng trong phạm vi, hoặc khoảng trống giữa hai hàng. Bạn có thể chỉ định vị trí con trỏ trỏ tới mệnh đề định hướng trong câu lệnh FETCH.
Cú pháp cho câu lệnh FETCH là
FETCH [[orientation] FROM} tên con trỏ INTO target-specification [target-specification] …;
Có 7 tùy chọn định hướng:
NEXT
-
PRIOR
-
ĐẦU TIÊN
-
LAST
-
HỢP ĐỒNG
-
QUAN HỆ ĐỐI TƯ
-
Tùy chọn mặc định là NEXT, và ngẫu nhiên là > chỉ có
định hướng có sẵn trong các phiên bản SQL trước SQL-92. Định hướng NEXT di chuyển con trỏ từ bất cứ nơi nào đến hàng tiếp theo trong tập hợp được chỉ định bởi biểu thức truy vấn. Điều đó có nghĩa là nếu con trỏ nằm trước bản ghi đầu tiên, nó di chuyển đến bản ghi đầu tiên.
nó di chuyển để ghi n +1. Nếu con trỏ trỏ đến bản ghi cuối cùng trong tập hợp, nó sẽ di chuyển ra ngoài bản ghi đó, và thông báo của một điều kiện không có dữ liệu được trả về trong biến hệ thống SQLSTATE. Các thông số kỹ thuật đích là các biến hoặc các tham số của máy chủ lưu trữ, tuỳ thuộc vào việc SQL nhúng hoặc một ngôn ngữ mô đun, tương ứng, đang sử dụng con trỏ. Số lượng và kiểu của các đặc tả mục tiêu phải khớp với số lượng và loại cột được chỉ định bởi biểu thức truy vấn trong DECLARE CURSOR.
Vì vậy, trong trường hợp của SQL nhúng, khi bạn lấy một danh sách năm giá trị từ một hàng của bảng, năm biến chủ phải ở đó để nhận các giá trị đó, và phải là các loại đúng.
Định hướng của một con trỏ có thể cuộnBởi vì con trỏ SQL được cuộn, bạn có các lựa chọn khác ngoài NEXT. Nếu bạn chỉ định TRƯỚC, con trỏ di chuyển đến hàng ngay trước vị trí hiện tại của nó. Nếu bạn chỉ định FIRST, nó chỉ đến bản ghi đầu tiên trong tập hợp, và nếu bạn chỉ định LAST, nó sẽ trỏ tới bản ghi cuối cùng.
Khi bạn sử dụng định hướng ABSOLUTE và RELATIVE, bạn cũng phải xác định một giá trị số nguyên. Ví dụ: FETCH ABSOLUTE 7 di chuyển con trỏ đến hàng thứ bảy từ đầu tập. FETCH RELATIVE 7 di chuyển con trỏ bảy hàng vượt vị trí hiện tại của nó. FETCH RELATIVE 0 không di chuyển con trỏ.
FETCH RELATIVE 1 có tác dụng tương tự như FETCH NEXT. FETCH RELATIVE -1 có tác dụng tương tự như FETCH PRIOR. FETCH ABSOLUTE 1 cung cấp cho bạn bản ghi đầu tiên trong bộ, FETCH ABSOLUTE 2 cung cấp cho bạn bản ghi thứ hai trong bộ, và như vậy.Tương tự, FETCH ABSOLUTE -1 cung cấp cho bạn bản ghi cuối cùng trong tập, FETCH ABSOLUTE -2 sẽ cho bạn bản ghi cuối cùng tiếp theo, và vân vân. Chỉ định FETCH ABSOLUTE 0 trả về mã điều kiện ngoại lệ dữ liệu không, và cũng như FETCH ABSOLUTE 17 nếu chỉ có 16 hàng trong tập hợp. FETCH cho bạn bản ghi được chỉ định bởi đặc tả giá trị đơn giản.
Định vị các câu lệnh DELETE và UPDATE
Bạn có thể thực hiện thao tác xóa và cập nhật trên hàng mà một con trỏ đang trỏ tới. Cú pháp của câu lệnh DELETE giống như sau:
XÓA T FROM tên bảng WHERE CURRENT OF cursor-name;
Nếu con trỏ không trỏ đến một hàng, câu lệnh sẽ trả về một điều kiện lỗi, và không có sự xóa nào xảy ra.
Cú pháp của câu lệnh UPDATE như sau:
UPDATE tên-bảng SET column-name = giá trị [column-name = value] … WHERE Current of cursor-name;
Giá trị bạn đặt vào mỗi cột được chỉ định phải là một biểu thức giá trị hoặc từ khóa DEFAULT. Nếu hoạt động cập nhật vị trí đã cố gắng trả về lỗi, cập nhật không được thực hiện.