Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Apa itu kursor di oracle

Apa itu kursor di oracle

Oracle Menggunakan area kerja yang disebut area Private SQL untuk mengeksekusi Pernyataan SQL dan menyimpan informasi. Kursor Oracle adalah konstruksi PL/SQL yang memungkinkan Anda memberi nama area kerja ini, dan untuk mengakses informasi yang disimpannya

Jenis Kursor di Oracle

  • Kursor Tersirat di Oracle
  • Kursor Eksplisit di Oracle

Kursor Eksplisit

Kursor eksplisit memiliki tahapan berikut

1) Deklarasikan:Kami mendeklarasikan nama kursor dan mendefinisikan struktur kueri

2) Buka:  Pernyataan buka mengeksekusi kueri dan mengikat variabel apa pun yang direferensikan. Baris yang diidentifikasi oleh kueri disebut set aktif. Dan sekarang sudah tersedia untuk diambil

Apa itu Set Aktif: Kumpulan baris yang dikembalikan oleh kueri beberapa baris

Ukurannya adalah jumlah baris yang memenuhi kriteria pencarian Anda

3) Ambil:Pada tahap ini, baris diambil dari kursor, dan setelah setiap pengambilan, Anda menguji kursor untuk baris yang tersisa, jika tidak ada baris, Anda melanjutkan untuk menutup kursor

4) Tutup:Pernyataan tutup melepaskan set baris yang aktif dan kita dapat kembali membuka kursor untuk mengambil set aktif yang disegarkan

Tahapan secara detail

Mendeklarasikan Kursor

  • Nama Kursor
  • Struktur Kueri
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;

Membuka Kursor

Di sini Parsing dan eksekusi Query selesai. Setelah Membuka Kursor, baris yang dikembalikan oleh kueri tersedia untuk diambil.

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;
 /

Kursor sekarang akan menunjuk ke baris pertama di set aktif.

Mengambil baris

Setelah kursor dibuka, baris saat ini dimuat ke dalam variabel. Baris saat ini adalah baris di mana kursor saat ini menunjuk Pengambilan data ke dalam variabel PL/SQL atau host

Variabel dilakukan melalui pernyataan FETCH

Syntax: 
 FETCH  INTO ;
  • Untuk setiap nilai kolom yang dikembalikan oleh kueri yang terkait dengan kursor, harus ada

variabel yang sesuai dalam daftar INTO.

  • JUGA Tipe datanya harus kompatibel

MENUTUP KURSOR

Ini secara eksplisit menutup kursor, memungkinkan untuk dibuka kembali, jika diperlukan.

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;
 /

Atribut Kursor Eksplisit

Atribut Jenis Deskripsi
%ISOPEN Boolean Mengevaluasi menjadi TRUE jika kursor terbuka
%TIDAK DITEMUKAN Boolean Mengevaluasi ke TRUE jika pengambilan terbaru tidak mengembalikan satu baris
% DITEMUKAN Boolean Mengevaluasi menjadi TRUE jika pengambilan terbaru mengembalikan satu baris
%ROWCOUNT NUMBER Mengevaluasi jumlah total baris yang dikembalikan sejauh ini

Konsep lanjutan dengan kursor Oracle

Kursor dan Catatan Oracle

1)Kami telah membaca tentang catatan PLSQL.

2) Kita dapat memproses baris dari himpunan aktif dengan mengambil nilai ke dalam PL/SQL Record juga

3) Kami juga dapat mendefinisikan catatan plsql berdasarkan daftar kolom yang dipilih dalam kursor eksplisit juga

Contoh

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;
 /

Cursor dengan Parameter/kursor berparameter di oracle

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

1)Meneruskan nilai parameter ke kursor saat kursor dibuka dan kueri dijalankan

2) Buka kursor eksplisit beberapa kali dengan set aktif yang berbeda setiap kali

Open cursor_name(parameter_value , ……);

Contoh

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;
 /

 Artikel Terkait

Cara bekerja dengan tanggal di Oracle sql
Tabel Oracle PLSQL
Segala sesuatu tentang catatan Oracle PLSQL
Paling sering ditanyakan 25 pertanyaan wawancara oracle plsql
Struktur Blok Oracle PLSQL dan Variabel Oracle PLSQL
Atribut kursor


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hapus dengan Gabung di Oracle sql Query

  2. Bagaimana Anda bisa tahu jika suatu nilai bukan numerik di Oracle?

  3. Mendapatkan kesalahan saat Menjalankan Paket

  4. Bagaimana cara mengonversi teks menjadi angka secara efisien di Oracle PL/SQL dengan NLS_NUMERIC_CHARACTERS non-default?

  5. ubah gumpalan menjadi gumpalan