Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Con trỏ trong oracle là gì

Con trỏ trong oracle là gì

Oracle Sử dụng vùng làm việc được gọi là vùng SQL riêng để thực thi các câu lệnh SQL và lưu trữ thông tin. Con trỏ Oracle là một cấu trúc PL / SQL cho phép bạn đặt tên cho các vùng làm việc này và truy cập thông tin được lưu trữ của chúng

Các loại con trỏ trong Oracle

  • Con trỏ ngầm trong Oracle
  • Con trỏ rõ ràng trong Oracle

Con trỏ rõ ràng

Con trỏ rõ ràng có các giai đoạn sau

1) Khai báo:Chúng tôi khai báo tên của con trỏ và xác định cấu trúc của truy vấn

2) Mở:Câu lệnh mở thực hiện truy vấn và liên kết bất kỳ biến nào được tham chiếu. Các hàng được xác định bởi truy vấn được gọi là tập hợp Hoạt động. Và bây giờ có sẵn để tìm nạp

Bộ Hoạt động là gì: Tập hợp các hàng được trả về bởi một truy vấn nhiều hàng

Kích thước của nó là số hàng đáp ứng tiêu chí tìm kiếm của bạn

3) Tìm nạp:Trong giai đoạn này, các hàng được tìm nạp từ con trỏ và sau mỗi lần tìm nạp, bạn kiểm tra con trỏ xem có hàng còn lại nào không, nếu không có hàng nào, bạn tiến hành đóng con trỏ

4) Đóng:Câu lệnh đóng giải phóng tập hợp hàng đang hoạt động và chúng ta có thể mở lại con trỏ để tìm nạp tập hợp hoạt động làm mới

Chi tiết các giai đoạn

Khai báo con trỏ

  • Tên con trỏ
  • Cấu trúc của Truy vấn
Syntax:
 CURSOR  IS   :  It includes most of the usual clauses, but INTO Clause is not allowed
Example:
 DECLARE
 CURSOR cur1 is SELECT address,salary,emp_no,emp_name FROM emp WHERE region=’US’;
 ………………………………
 BEGIN
 ………………………………
 END;

Mở con trỏ

Đến đây Phân tích cú pháp và thực thi Truy vấn đã xong. Sau khi mở con trỏ, các hàng được trả về bởi truy vấn có sẵn để tìm nạp.

Syntax:
 Open <cursor name>
 This statement is used within the executable section of the block.
 It also establishes an active set of the rows
Example:
  OPEN cur1;
 DECLARE
 v_salary number;
 CURSOR cur1 is SELECT salary FROM emp WHERE region=’US’;
 BEGIN
 OPEN cur1;
 LOOP
 FETCH cur1 into v_salary;
 EXIT WHEN cur1%NOTFOUND;
 DBMS_OUTPUT.PUT_LINE (v_salary);
 END LOOP;
 CLOSE cur1;
 END;
 /

Bây giờ con trỏ sẽ trỏ đến hàng đầu tiên trong nhóm hiện hoạt.

Tìm nạp các hàng

Sau khi con trỏ được mở, hàng hiện tại được tải vào các biến. Hàng hiện tại là hàng mà con trỏ hiện đang trỏ. Việc truy xuất dữ liệu vào biến hoặc máy chủ PL / SQL

Biến được thực hiện thông qua câu lệnh FETCH

Syntax: 
 FETCH  INTO ;
  • Đối với mỗi giá trị cột được trả về bởi truy vấn được liên kết với con trỏ, phải có một

biến tương ứng trong danh sách INTO.

  • CŨNG PHẢI Kiểu dữ liệu của họ phải tương thích

ĐÓNG CỬA HÀNG

Nó đóng con trỏ một cách rõ ràng, cho phép nó được mở lại, nếu cần.

Syntax:
 CLOSE <cursor-name>;
Example: 
 CLOSE cur1
Example of Using CLOSE <Cursor Name>
 DECLARE
 v_address emp.address%TYPE;
 CURSOR cur1 is select address from emp;
 BEGIN
 OPEN cur1;
 LOOP
 FETCH cur1 into v_address;
 EXIT WHEN cur1%NOTFOUND;
 DBMS_OUTPUT.PUT_LINE(v_address);
 END LOOP;
 CLOSE cur1;
 END;
 /

Thuộc tính con trỏ rõ ràng

Thuộc tính Loại Mô tả
% ISOPEN Boolean Đánh giá thành TRUE nếu con trỏ đang mở
% NOTFOUND Boolean Đánh giá thành TRUE nếu lần tìm nạp gần đây nhất không trả về một hàng
% TÌM HIỂU Boolean Đánh giá thành TRUE nếu lần tìm nạp gần đây nhất trả về một hàng
% ROWCOUNT SỐ Đánh giá tổng số hàng được trả về cho đến nay

Khái niệm nâng cao với con trỏ Oracle

Con trỏ và Bản ghi Oracle

1) Chúng tôi đã đọc về các bản ghi PLSQL.

2) Chúng tôi có thể xử lý các hàng của tập hợp hoạt động bằng cách tìm nạp các giá trị vào Bản ghi PL / SQL

3) Chúng tôi cũng có thể xác định một bản ghi plsql dựa trên danh sách các cột được chọn trong các con trỏ rõ ràng cũng

Ví dụ

DECLARE 
 CURSOR dept_cursor is Select deptno,dept_name  FROM   dept;
 dept_record dept_cursor%rowtype;
 BEGIN
 OPEN dept_cursor;
 LOOP
 FETCH dept_cursor INTO dept_record;
 Insert into dept_temp (deptno, deptname) values (dept_record.deptno, dept_record.dept_name);
 EXIT WHEN dept_cursor%notfound;
 END LOOP;
 Commit;
 CLOSE dept_cursor;
 END;
 /

Con trỏ có tham số / con trỏ được tham số hóa trong tiên tri

Syntax: 
 CURSOR cursor_name(parameter_name datatype,  )
 IS
 Select_statement;

1) Truyền các giá trị tham số cho con trỏ khi con trỏ được mở và truy vấn được thực thi

2) Mỗi ​​lần mở một con trỏ rõ ràng với các nhóm hoạt động khác nhau

Open cursor_name(parameter_value , ……);

Ví dụ

DECLARE 
 CURSOR cur1(v_deptno number) is
 Select deptname,dept_loc,dept_pincode from dept where deptno=v_deptno;
 Dept_record      cur1%rowtype;
 l_deptno  number:=111;
 BEGIN
 OPEN  cur1(112);
 LOOP
 FETCH cur1 into dept_record;
 IF cur1%FOUND THEN
 Dbms_output.put_line(dept_record.deptname);
 ELSE
 Exit;
 END IF;
 END LOOP;
 CLOSE cur1;
 OPEN cur1(l_deptno);
 LOOP
 FETCH cur1 into dept_record;
 IF cur1%FOUND THEN
 Dbms_output.put_line(dept_record.deptname);
 ELSE
 Exit;
 END IF;
 END LOOP;
 CLOSE cur1;
 END;
 /

Các bài viết có liên quan

Cách làm việc với date trong Oracle sql
Oracle PLSQL Tables
Mọi thứ về bản ghi Oracle PLSQL
25 câu hỏi phỏng vấn oracle plsql thường được hỏi nhất
Oracle PLSQL Block Structure và Oracle PLSQL Variable
Thuộc tính con trỏ


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi khi sử dụng oracle.dataaccess.dll

  2. Quản trị cơ bản của Oracle 12c Multitenant

  3. Làm thế nào để gọi thủ tục lưu trữ Oracle trong Python?

  4. Giữ trật tự từ mệnh đề 'IN'

  5. Lỗi SQL ORA-01722:số không hợp lệ