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

Metode Pengumpulan:Fungsi PERTAMA &TERAKHIR Dalam Database Oracle

Selamat datang kembali sekali lagi ke seri Metode Pengumpulan di Oracle Database. Sejauh ini dalam seri ini kita telah membahas Collection Function Count ( ) dan Collection Function Exist ( ). Semoga Anda menikmati membaca. Hari ini dalam tutorial PL/SQL ini kita akan mempelajari metode pengumpulan Pertama ( ) dan Terakhir ( ).

Apa itu metode pengumpulan FIRST ( ) dan LAST ( )?

Kami menggunakan fungsi koleksi Pertama &Terakhir untuk mengetahui nilai indeks pertama dan terakhir yang ditentukan dalam koleksi.

Dapatkah kami menggunakan metode pengumpulan ini dengan semua jenis koleksi?

Ya! Anda dapat menggunakan kedua fungsi ini dengan ketiga jenis koleksi yaitu Associative Array, Nested table, dan VARRAY.

Kapan metode pengumpulan FIRST ( ) dan LAST ( ) mengembalikan null?

Kedua fungsi tersebut mengembalikan null saat diterapkan ke koleksi kosong atau saat diterapkan ke koleksi inisialisasi yang tidak memiliki elemen.

Dapatkah Anda membuat daftar spesifikasi fungsi untuk kedua fungsi ini?

Tentu! Kenapa tidak. Spesifikasi fungsi koleksi PERTAMA ( ) adalah:

FUNCTION FIRST RETURN PLS_INTEGER | VARCHAR2

Dan spesifikasi fungsi untuk fungsi collection LAST ( ) adalah:

FUNCTION LAST RETURN PLS_INTEGER | VARCHAR2

Info:
Untuk larik asosiatif berindeks string, metode ini mengembalikan string; "terendah" dan "tertinggi" ditentukan oleh urutan set karakter yang digunakan dalam sesi itu.

Bagaimana jika hanya ada 1 elemen di VARRAY saya?

Dalam hal ini fungsi koleksi FIRST ( ) selalu 1 dan metode koleksi LAST ( ) selalu sama dengan COUNT.

Bagaimana jika saya menerapkan fungsi ini ke koleksi yang tidak diinisialisasi?

Maksud saya serius, mengapa Anda melakukannya! Bagaimanapun jika Anda menerapkan fungsi koleksi FIRST &LAST ke koleksi yang tidak diinisialisasi maka itu akan meningkatkan pengecualian COLLECTION_IS_NULL.

Contoh:Bagaimana cara menggunakan fungsi koleksi PERTAMA dan TERAKHIR dengan koleksi?

SET SERVEROUTPUT ON;
DECLARE
    TYPE nt_tab IS TABLE OF NUMBER;
    col_var nt_tab := nt_tab(10, 20, 30, 40, 50);
BEGIN
    DBMS_OUTPUT.PUT_LINE ('First Index of the Nested table is ' || col_var.FIRST);
    DBMS_OUTPUT.PUT_LINE ('Last Index of the Nested table is ' || col_var.LAST);
END;
/

Pada contoh di atas kita telah membuat tabel bersarang dengan nama NT_TAB dan menginisialisasinya menggunakan variabel koleksi col_var. Tabel bersarang ini memiliki 5 indeks tempat kami menyimpan nilainya. Indeks terendah dalam tabel bersarang ini adalah 1 yang memegang nilai 10 dan indeks maksimum adalah 5 dengan nilai 50. Dengan demikian pada eksekusi hasil dari DBMS_OUTPUT pertama adalah 1 dan dari pernyataan DBMS_OUTPUT kedua adalah 5.

Silakan salin kodenya dan lihat sendiri hasilnya.

Bagaimana jika kita menghapus elemen pertama dari tabel bersarang? Lalu apa yang akan menjadi output dari fungsi koleksi PERTAMA?

Itu adalah pertanyaan yang sangat bagus! Jika Anda menghapus elemen pertama dari fungsi koleksi maka fungsi koleksi FIRST akan mengembalikan subskrip yang lebih besar dari 1 dan menyimpan beberapa data. Mari kita lihat contohnya:

SET SERVEROUTPUT ON;
DECLARE
    TYPE nt_tab IS TABLE OF NUMBER;
    col_var nt_tab := nt_tab(10, 20, 30, 40, 50);
BEGIN
col_var.DELETE(1);
    DBMS_OUTPUT.PUT_LINE ('First Index after DELETE is ' || col_var.FIRST);
END;
/

Dalam contoh di atas kami menghapus elemen pertama dari tabel bersarang nt_tab menggunakan metode koleksi DELETE. Setelah menghapus elemen pertama yaitu 10 pada indeks 1, subskrip terendah baru sekarang adalah 2 yang memiliki beberapa data yang tersimpan di dalamnya. Jadi pada saat eksekusi hasilnya akan menjadi 2.

Bagaimana jika saya menghapus elemen dari tengah koleksi?

Jika Anda menghapus data dari tengah maka fungsi pengumpulan LAST akan mengembalikan nilai yang lebih besar dari nilai yang dikembalikan oleh metode COUNT.

Dapatkah kita melihat data yang disimpan ke dalam indeks koleksi menggunakan metode pengumpulan PERTAMA dan TERAKHIR?

Ketika saya menjelaskan konsep yang sama di kelas, seorang siswa mengangkat tangannya dan bertanya kepada saya.

Pak, sejauh ini kita melihat bahwa fungsi-fungsi ini mengembalikan nomor indeks koleksi. Bagaimana jika kita ingin melihat data yang tersimpan di index. Apakah ada cara untuk melihat data yang disimpan ke dalam indeks menggunakan metode pengumpulan ini PERTAMA &TERAKHIR?

Jawaban atas pertanyaan ini adalah, ya! Tentu saja . Bersama dengan nomor subskrip, Anda dapat menggunakan fungsi ini untuk melihat data yang disimpan dalam indeks koleksi terendah dan tertinggi.

Misalnya

SET SERVEROUTPUT ON;
DECLARE
    TYPE nt_tab IS TABLE OF NUMBER;
    col_var nt_tab := nt_tab(10, 20, 30, 40, 50);
BEGIN
    -- This output statement will return 10 which is the value stored at the first index
    DBMS_OUTPUT.PUT_LINE ('Value stored at First Index is ' || col_var(col_var.FIRST));
    -- This output statement will return 50 which is the value stored at the last index
    DBMS_OUTPUT.PUT_LINE ('Value stored at First Index is ' || col_var(col_var.LAST));
END;
/

Untuk melihat data yang disimpan ke dalam indeks pertama dan terakhir, Anda hanya perlu menempatkan pemanggilan fungsi dari fungsi ini di dalam kurung variabel koleksi yaitu col_var seperti yang kita lakukan pada contoh di atas.

Sekarang pertanyaannya adalah bagaimana jika kita MEMOTONG koleksinya? Lalu apa yang akan menjadi output dari fungsi koleksi LAST? Silakan lihat tutorial video di mana saya telah menjelaskan apa yang akan menjadi output dari metode pengumpulan TERAKHIR ketika Anda memangkas koleksi menggunakan contoh.

Itu saja tentang Metode Pengumpulan ini. Semoga Anda menemukan blog ini bermanfaat. 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. Cara mengetahui kapan tabel Oracle diperbarui terakhir kali

  2. Setara dengan tabel eksternal Oracle di SQL Server

  3. Koleksi Oracle PL/SQL - Menambahkan Elemen ke Tabel yang Ada

  4. Apa yang dimaksud dengan simbol SQL Select || berarti?

  5. Oracle Insert Select dengan pesanan berdasarkan