Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

PL/SQL Strong Ref Cursor Dengan Tipe Data Rekam Buatan Pengguna

Kursor Ref Kuat Dengan Tipe Data Rekaman Buatan Pengguna

Dalam tutorial sebelumnya kita telah mempelajari cara membuat kursor ref kuat PL/SQL menggunakan variabel tipe data record berbasis tabel. Di sana saya mendemonstrasikan penggunaan kursor ref yang kuat untuk menangani data dari semua kolom tabel karyawan. Akibatnya, hal ini menimbulkan kekhawatiran. Bagaimana jika kita menginginkan data dari beberapa kolom tabel tertentu? Itulah tepatnya yang akan kita bahas dalam tutorial hari ini.

Namun, sebelum melanjutkan tutorial ini saya sarankan Anda untuk berkenalan dengan pengetahuan tentang PL/SQL Ref Cursors. Khususnya Cursor Ref Kuat dan Tipe Data Rekam Buatan Pengguna. Selanjutnya, untuk kenyamanan Anda, saya menyediakan semua tautan yang diperlukan di sini:

  • Cara Membuat Kursor Ref yang Kuat menggunakan Catatan Berbasis Tabel
  • Apa yang dimaksud dengan Tipe Data Rekaman Buatan Pengguna?

Tutorial sebelumnya berhasil menunjukkan bagaimana kursor ref PL/SQL Strong mengambil dan menangani data dari semua kolom dalam satu baris. Tetapi bagaimana jika kita menginginkan data dari kolom baris tertentu? Katakanlah kita hanya ingin melihat E-mail atau gaji seorang karyawan. Akibatnya, kami tidak ingin menghabiskan sumber daya yang mahal dalam mengambil semua informasi yang tidak perlu. Jadi, bisakah kita menggunakan kursor ref yang sama untuk itu? Mari kita cari tahu.

Bisakah kita menggunakan Strong Ref Cursor yang kita buat di tutorial sebelumnya untuk mengambil data dari kolom tertentu?

Jawaban atas pertanyaan itu adalah Tidak, kami tidak bisa .

Karena Strong Ref Cursor tersebut dibuat dengan menggunakan Table Based Record Datatype. Sebagai ilustrasi, ketika kita membuat tipe data record berbasis tabel, mesin Oracle membuat struktur data komposit. Struktur ini penuh dengan bidang yang sesuai dengan setiap kolom dari tabel yang ditentukan.

Selanjutnya, semua bidang ini secara otomatis ditugaskan dengan nama yang sama dan tipe data yang sama seperti kolom dari tabel dasar. Tetapi ketika harus menginisialisasi record menggunakan kolom tertentu, kita harus melakukan semua pekerjaan ini secara manual.

Untuk lebih memahaminya silahkan simak tutorial PL/SQL 34. Disini saya sudah membahas bagaimana cara menginisialisasi record tipe data dan cara kerjanya secara detail.

Jadi, apa solusi untuk masalah ini?

Kita dapat dengan mudah menyelesaikan masalah ini. Kita dapat membuat kursor ref kuat PL/SQL dengan variabel Tipe Data Rekam Buatan Pengguna.

Contoh:PL/SQL Strong Ref Cursor dengan Variabel Tipe Data Rekam Buatan Pengguna.

Misalnya, kami ingin membuat kursor ref yang kuat dengan pernyataan SELECT. Yang mengembalikan hanya gaji karyawan yang id karyawannya 100.

SET SERVEROUTPUT ON;
DECLARE
	--Create User-Defined Record Datatype
    TYPE my_rec IS RECORD (
        emp_sal employees.salary%TYPE
        );
	--Declare Strong Ref Cursor
    TYPE RefCur IS REF CURSOR RETURN my_rec;
    cur_var REFCUR;
	--Another anchored datatype variable for holding data
    at_var  employees.salary%TYPE;
BEGIN
   OPEN cur_var FOR SELECT salary FROM employees WHERE employee_id = 100;
    FETCH cur_var INTO at_var;
    CLOSE cur_var;
    DBMS_OUTPUT.PUT_LINE ('Salary of the employee is '||at_var);
END;
/

Jadi, mari pecahkan kode ini dan lihat apa yang terjadi di sini.

Bagian Deklarasi

DECLARE
    TYPE my_rec IS RECORD (
        emp_sal employees.salary%TYPE
        );
    TYPE RefCur IS REF CURSOR RETURN my_rec;
    cur_var REFCUR;
    at_var  employees.salary%TYPE;

Inilah bagian deklarasi kami. Di tiga baris pertama bagian ini kita membuat tipe data record yang ditentukan pengguna dengan nama my_rec. Selanjutnya, tipe data record yang ditentukan pengguna ini hanya memiliki satu bidang yaitu emp_sal. Emp_sal adalah bidang tipe data berlabuh yang dirancang di atas kolom gaji dari tabel karyawan. Karena emp_sal adalah tipe data berlabuh maka secara otomatis akan diberikan tipe data dan lebar data kolom dasar yang dalam hal ini adalah gaji.

Tepat setelah itu kami mendeklarasikan PL/SQL Strong Ref Cursor kami dengan nama "RefCur". Jenis kembalinya kursor ref kuat ini adalah “my_rec” . Diikuti dengan deklarasi kursor kita membuat variabel kursor dengan nama cur_var. Selain itu, variabel ini digunakan untuk merujuk ke kursor ref kuat di depan kode.

Selain variabel kursor, kami juga memiliki variabel lain yang dideklarasikan di bagian ini. Variabel ini adalah "at_var" ini lagi-lagi merupakan variabel tipe data berlabuh. Ini digunakan untuk menyimpan data yang dikembalikan oleh kursor.

Sekarang mari kita masuk ke bagian eksekusi.

Bagian Eksekusi

BEGIN
    OPEN cur_var FOR SELECT salary FROM employees WHERE employee_id = 100;
    FETCH cur_var INTO at_var;
    CLOSE cur_var;
    DBMS_OUTPUT.PUT_LINE('Salary of the employee is '||at_var);
END;
/

Bagian eksekusi ini memiliki empat baris kode yang dapat dieksekusi. Mari kita lihat apa itu.

Baris 1:Pernyataan Terbuka Untuk

Pernyataan ini secara dinamis Membuka kursor yang disebutkan. Setelah itu melampirkan pernyataan SELECT yang ditentukan tepat setelah kata kunci FOR.

Dalam kasus kami, pernyataan ini membuka kursor ref yang kuat menggunakan variabel kursor "cur_var" – pernyataan SELECT. Yang mengembalikan data hanya dari “kolom gaji” pada tabel karyawan.

Baris 2:Ambil pernyataan

Pernyataan ini akan mengambil data dari kursor ref dan menyimpannya ke dalam variabel “at_var”. Sama pentingnya adalah memastikan bahwa tipe data dari data yang diambil dan variabel tempat data disimpan harus cocok. Jika tidak, akan terjadi kesalahan.

Baris 3:Pernyataan tutup

Baris ketiga adalah pernyataan tertutup. Menutup kursor yang sudah selesai adalah praktik yang baik.

Baris 4:Pernyataan keluaran

Akhirnya, pernyataan terakhir dari bagian eksekusi adalah pernyataan DBMS_OUTPUT. Dan itu menampilkan gaji karyawan kembali ke pengguna.

Keempat baris ini melengkapi bagian eksekusi blok PL/SQL ini. Selanjutnya eksekusi yang berhasil dari kode ini akan menunjukkan gaji dengan string yang diformat.

Apakah salah satu dari mereka yang belajar lebih baik dengan menonton video? Lalu inilah video tutorial tentang kursor ref kuat dengan tipe data record yang ditentukan pengguna.

Itu saja untuk tutorial ini. Pastikan untuk Bagikan blog ini di media sosial Anda &bantu orang lain belajar. Anda dapat berlangganan saluran YouTube untuk tutorial menarik lainnya. Terima kasih &semoga harimu menyenangkan!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Model Basis Data untuk Survei Online. Bagian 2

  2. Cara Mengganti Bagian dari String di T-SQL

  3. Kesalahan umum:Versi OS tidak cocok

  4. Bekerja dengan Data Java di Qlik Sense

  5. Analisis Big Data dengan Microsoft Azure Tools