Tuesday, November 21, 2017

Memperkenalkan PL / SQL Package


Paket PL / SQL adalah sekelompok fungsi, prosedur, tipe, kursor, dll yang terkait. Paket PL / SQL seperti sebuah perpustakaan yang pernah ditulis tersimpan dalam database Oracle dan dapat digunakan oleh banyak aplikasi.

Paket PL / SQL memiliki dua bagian: spesifikasi paket dan body kemasan.

    Spesifikasi paket adalah antarmuka umum aplikasimu. Masyarakat berarti fungsi, prosedur, jenis, dll yang tersimpan dapat diakses dari aplikasi lain.
    Sebuah paket berisi kode yang mengimplementasikan spesifikasi paket.



Membuat Spesifikasi Paket PL / SQL


Spesifikasi paket diperlukan saat  kamu membuat paket baru. Spesifikasi paket mencantumkan semua objek yang dapat diakses publik dari aplikasi lain. Spesifikasi paket juga menyediakan informasi yang perlu diketahui pengembang agar bisa menggunakan antarmuka. Singkatnya, spesifikasi paket adalah paket API.

Jika spesifikasi paket tidak berisi fungsi tersimpan, prosedur dan tidak diperlukan kode pribadi, kamu tidak perlu memiliki badan paket. Paket ini hanya berisi deklarasi tipe definisi dan variabel. Variabel tersebut dikenal sebagai data paket. Lingkup data paket bersifat global terhadap aplikasi.

Disarankan agar kamu menyembunyikan data paket sebanyak mungkin dan gunakan dan atur fungsi untuk membaca dan menulis data itu. Dengan melakukan ini, kamu dapat mencegah agar data paketmu tidak diubah secara tidak sengaja.

Penting untuk dicatat bahwa kamu harus mengkompilasi spesifikasi paket sebelum badan paket.

Berikut adalah sintaks untuk membuat spesifikasi paket PL / SQL:

CREATE [OR REPLACE] PACKAGE package_name
[ AUTHID { CURRENT_USER | DEFINER } ]
{ IS | AS }

   [definitions of public TYPES
   ,declarations of public variables, types, and objects
   ,declarations of exceptions
   ,pragmas
   ,declarations of cursors, procedures, and functions
   ,headers of procedures and functions]
END [package_name];
Pernyataan CREATE PACKAGE digunakan untuk menentukan spesifikasi paket baru. Jika kamu ingin membangun kembali paket yang ada, kamu dapat menggunakan REPLACE keyword dan bukan kata kunci CREATE keyword. Dalam spesifikasi paket, kamu dapat menentukan jenis baru, menyatakan variabel global, jenis, objek, pengecualian, kursor, prosedur, dan fungsi.

Berikut adalah contoh pembuatan spesifikasi paket baru yang disebut personel. Personnel package berisi dua fungsi: get_fullname () dan get_salary () berdasarkan ID karyawan.

CREATE OR REPLACE PACKAGE personnel AS
  -- get employee's fullname
  FUNCTION get_fullname(n_emp_id NUMBER)
    RETURN VARCHAR2;
  -- get employee's salary
  FUNCTION get_salary(n_emp_id NUMBER)
    RETURN NUMBER;
END personnel;

Membuat PL / SQL Package Body


PL / SQL package body berisi semua kode yang mengimplementasikan fungsi, prosedur, dan kursor yang tersimpan dalam spesifikasi paket.

Berikut ini menggambarkan sintaks pembuatan body pack:

CREATE [OR REPLACE] PACKAGE BODY package_name
   { IS | AS }

   [definitions of private TYPEs
   ,declarations of private variables, types, and objects
   ,full definitions of cursors
   ,full definitions of procedures and functions]
[BEGIN
   sequence_of_statements

[EXCEPTION
   exception_handlers ] ]

END [package_name];
Sintaksnya mirip dengan spesifikasi paket kecuali untuk kata kunci BODY dan kode spesifikasi paket yang diimplementasikan.

Badan paket dapat berisi bagian inisialisasi paket opsional yang muncul di bagian akhir body kemasan. Bagian inisialisasi paket dimulai dengan kata kunci BEGIN key dan diakhiri dengan EXCEPTION section atau END keyword dari paket. Bagian inisialisasi paket dijalankan saat aplikasi merujuk ke elemen paket pada saat pertama.

Berikut ini mengilustrasikan badan paket personnel package:

/*
  Package personnel body
*/
CREATE OR REPLACE PACKAGE BODY personnel AS
  -- get employee's fullname
  FUNCTION get_fullname(n_emp_id NUMBER) RETURN VARCHAR2 IS
      v_fullname VARCHAR2(46);
  BEGIN
    SELECT first_name || ',' ||  last_name
    INTO v_fullname
    FROM employees
    WHERE employee_id = n_emp_id;

    RETURN v_fullname;

  EXCEPTION
  WHEN NO_DATA_FOUND THEN
    RETURN NULL;
  WHEN TOO_MANY_ROWS THEN
    RETURN NULL;
  END; -- end get_fullname

  -- get salary
  FUNCTION get_salary(n_emp_id NUMBER) RETURN NUMBER IS
    n_salary NUMBER(8,2);
  BEGIN
    SELECT salary
    INTO n_salary
    FROM employees
    WHERE employee_id = n_emp_id;

    RETURN n_salary;

    EXCEPTION
      WHEN NO_DATA_FOUND THEN
        RETURN NULL;
      WHEN TOO_MANY_ROWS THEN
        RETURN NULL;
  END;
END personnel;

Mengacu pada elemen paket PL / SQL


kamu bisa mengacu pada elemen paket dengan menggunakan notasi titik:


package_name.package_element

Kode berikut menggambarkan bagaimana menggunakan personnelpackage dengan memanggil fungsinya:

SET SERVEROUTPUT ON SIZE 1000000;
DECLARE
  n_salary NUMBER(8,2);
  v_name   VARCHAR2(46);
  n_emp_id NUMBER := &emp_id;
BEGIN

  v_name   := personnel.get_fullname(n_emp_id);
  n_salary := personnel.get_salary(n_emp_id);

  IF v_name  IS NOT NULL AND
    n_salary IS NOT NULL
  THEN
    dbms_output.put_line('Employee: ' || v_name);
    dbms_output.put_line('Salary:' || n_salary);
  END IF;
END;

Dalam tutorial ini, kamutelah belajar membuat paket PL / SQL lengkap dan bagaimana cara menggunakannya di program lain.



sumber: http://www.plsqltutorial.com

0 comments:

Post a Comment

Popular Posts