PL/SQL Object Types

10.7. Mendeklarasikan dan Menginisialisasi Objects

Sekali sebuah object type didefinisikan dan dipasang di dalam schema, kita dapat menggunakannya untuk mendeklarasikan objek-objek di dalam suatu PL/SQL block, subprogram, atau package. Sebagai contoh, kita dapat menggunakan object type untuk menentukan datatype dari sebuah attribute, column, variable, bind variable, record field, table element, formal parameter, atau hasil function. Pada saat runtime, instances dari objek tersebut diciptakan; yaitu, objek-objek dari type tersebut diawali. Setiap objek dapat menampung nilai-nilai yang berbeda.

Objek-objek seperti itu mengikuti aturan-aturan jangkauan dan permulaan yang umum. Di dalam sebuah block atau subprogram, objek-objek lokal dimulai ketika kita memasuki block atau subprogram dan berhenti ada ketika kita keluar. Di dalam sebuah package, objek-objek dimulai ketika kita pertama kali mereferensi package tersebut dan berhenti ada ketika kita mengakhiri database session.

Oracle MagazineOracle Magazine contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more. Oracle (NASDAQ: ORCL) is the world’s largest enterprise software company.

For more information about Oracle, please visit their Web site at http://www.oracle.com. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

Get Free Oracle Magazine

10.7.1. Mendeklarasikan Objects

Kita dapat menggunakan object types dimanapun built-in types seperti CHAR atau NUMBER dapat digunakan. Di dalam block di bawah ini, kita mendeklarasikan object r dari type Rational. Kemudian, kita memanggil constructor untuk object type Rational untuk menginisialisasi objek tersebut. Pemanggilan memberikan nilai-nilai 6 dan 8 kepada attributes num dan den, secara berturut-turut:

DECLARE
r Rational;
BEGIN
  r := Rational(6, 8);
  dbms_output.put_line(r.num); -- prints 6

Kita dapat mendeklarasikan objek-objek seperti formal parameters dari functions atau procedures. Dengan cara itu, kita dapat melewatkan objek-objek ke stored subprograms dan dari satu subprogram ke lainnya. Di dalam contoh berikut, kita menggunakan object type Account untuk menentukan datatype dari sebuah formal parameter:

DECLARE
  ...
PROCEDURE open_acct (new_acct IN OUT Account) IS ...

Di dalam contoh berikut ini, kita menggunakan object type Account untuk menentukan return type (tipe hasil) dari sebuah function:

DECLARE
  ...
FUNCTION get_acct (acct_id IN INTEGER) RETURN Account IS ...

10.7.2. Menginisialisasi Objects

Sampai kita menginisialisasi sebuah object dengan memanggil constructor untuk object type-nya, objek tersebut secara atomic adalah null. Yaitu, object tersebut itu sendiri adalah null, tidak hanya attributes-nya. Mari kita perhatikan contoh berikut ini:

DECLARE
r Rational; -- r becomes atomically null
BEGIN
  r := Rational(2,3); -- r becomes 2/3

 

Sebuah objek null tidak pernah sama dengan objek lain. Dalam kenyataannya, membandingkan sebuah objek null dengan objek lain selalu menghasilkan NULL. Juga, jika kita memberikan sebuah atomically objek null ke objek lain, objek tersebut menjadi atomically null (dan harus diinisialisasi ulang). Sebaliknya, jika kita memberikan non-nilai NULL ke sebuah objek, objek tersebut menjadi atomically null, seperti ditunjukkan oleh contoh berikut ini:

DECLARE
r Rational;
BEGIN
  r Rational := Rational(1,2); -- r becomes 1/2
  r := NULL; -- r becomes atomically null
  IF r IS NULL THEN ... -- condition yields TRUE

 

Sebuah praktek pemrograman yang baik adalah menginisialisasi sebuah objek di dalam deklarasinya, seperti ditunjukkan oleh contoh berikut ini:

DECLARE
  r Rational := Rational(2,3); -- r becomes 2/3

10.7.3. Bagaimana PL/SQL Memperlakukan Objek-Objek yang Tidak Diinisialisasi

Di dalam sebuah ekspresi, attributes dari sebuah objek yang tak terinisialisasi diberi nilai NULL. Jika kita berusaha untuk memberikan nilai-nilai ke attributes dari sebuah objek tak terinisialisasi, menyebabkan munculnya predefined exception ACCESS_INTO_NULL. Ketika diterapkan kepada sebuah objek tak terinisialisasi atau attributes-nya, operator pembanding IS NULL menghasilkan TRUE.

Contoh berikut ini menggambarkan perbedaan diantara objek-objek null dan objek-objek dengan null attributes:

DECLARE
r Rational; -- r is atomically null
BEGIN
  IF r IS NULL THEN ... -- yields TRUE
  IF r.num IS NULL THEN ... -- yields TRUE
  r := Rational(NULL, NULL); -- initializes r
  r.num := 4; -- succeeds because r is no longer atomically null
  -- even though all its attributes are null
  r := NULL; -- r becomes atomically null again
  r.num := 4; -- raises ACCESS_INTO_NULL
  EXCEPTION
    WHEN ACCESS_INTO_NULL THEN
      ...
END;

Pemanggilan kepada methods dari sebuah objek tak terinisialisasi memunculkan predefined exception NULL_SELF_DISPATCH. Ketika dilewatkan sebagai argumen-argumen kepada parameter-parameter IN, atribut-atribut dari sebuah objek tak terinisialisasi diberi nilai NULL. Ketika dilewatkan sebagai argumen-argumen ke parameter-parameter OUT atau IN OUT, mereka menyebabkan sebuah exception jika kita berusaha menulis ke mereka.

 

Pages: 1 2 3 4 5 6 7 8 9 10 11

 

Buku ini membahas berbagai macam tip dan trik yang sangat berguna bagi Anda pembaca pengguna database Oracle. Pemula, mahasiswa, programmer, maupun database administrator yang mengharapkan solusi cepat dalam menangani permasalahan-permasalahan dalam penggunaan database Oracle dapat membaca buku ini. Anda tidak harus membaca buku ini secara urut karena buku ini di susun berdasarkan topik permasalahan, dan Anda dapat membaca topik-topik yang sesuai dengan permasalahan yang Anda hadapi.
Dapat di beli di toko buku Gramedia, Gunung Agung, Uranus, Karisma dsb. Harga Rp. 24.800,- (157 halaman)

 

Related Articles

 

Comments

[…] Silahkan melanjutkan membaca pembahasan PL/SQL Object Types […]

[…] SubprogramsPL/SQL Object TypesNative Dynamic SQLMenangani PL/SQL ErrorsInteraksi PL/SQL dengan […]

Leave a comment

(required)

(required)


*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word