PL/SQL Object Types
10.8. Mengakses Attributes
Kita dapat mereferensi kepada sebuah attribute hanya dengan nama (tidak dengan posisi di dalam object type). Untuk mengakses atau mengubah nilai dari sebuah attribute, kita menggunakan notasi titik. Di dalam contoh di bawah ini, kita memberikan nilai dari attribute den kepada variable denominator. Kemudian , kita memberikan nilai yang tersimpan di dalam variable numerator ke attribute num.
DECLARE r Rational := Rational(NULL, NULL); numerator INTEGER; denominator INTEGER; BEGIN ... denominator := r.den; r.num := numerator;
Nama-nama attribute dapat dirangkai, yang mana mengijinkan kita mengakses attributes tersebut dari sebuah object type bersarang (nested object type). Sebagai contoh, misalkan kita mendefinisikan object types Address dan Student, seperti berikut:
CREATE TYPE Address AS OBJECT ( street VARCHAR2(30), city VARCHAR2(20), state CHAR(2), zip_code VARCHAR2(5) );
CREATE TYPE Student AS OBJECT ( name VARCHAR2(20), home_address Address, phone_number VARCHAR2(10), status VARCAHR2(10), advisor_name VARCHAR2(20), ... );
Perlu dicatat bahwa zip_code merupakan sebuah attribute dari object type Address dan Address tersebut merupakan tipe data dari attribute home_address di dalam object type Student. Jika s merupakan sebuah object Student, kita mengakses nilai dari attribute zip_code –nya seperti berikut:
s.home_address.zip_code
10.9. Mendefinisikan Constructors
Secara default, kita tidak perlu mendefinisikan sebuah constructor untuk sebuah object type. System menyediakan sebuah default constructor yang menerima sebuah parameter yang terkait dengan setiap attribute.
Kita mungkin juga ingin mendefinisikan constructor milik kita sendiri:
- Untuk menyediakan nilai-nilai default bagi beberapa attributes. Kita dapat meyakinkan bahwa nilai-nilai adalah benar berdasarkan kepada pemanggil untuk menyediakan setiap nilai attribute.
- Untuk menghindari banyak procedures dengan tujuan khusus yang hanya untuk menginisialisasi bagian-bagian berbeda dari sebuah objek.
- Untuk menghindari perubahan-perubahan kode yang memanggil constructor tersebut, ketika attributes baru ditambahkan ke type tersebut. Constructor tersebut mungkin membutuhkan beberapa kode baru, sebagai contoh untuk mengatur attribute menjadi null, namun signature-nya dapat tetap sama sehingga pemanggilan yang ada kepada constructor tersebut dapat tetap terus bekerja.
Sebagai contoh:
CREATE OR REPLACE TYPE rectangle AS OBJECT ( -- The type has 3 attributes. length NUMBER, width NUMBER, area NUMBER, -- Define a constructor that has only 2 parameters. CONSTRUCTOR FUNCTION rectangle(length NUMBER, width NUMBER) RETURN SELF AS RESULT ); / CREATE OR REPLACE TYPE BODY rectangle AS CONSTRUCTOR FUNCTION rectangle(length NUMBER, width NUMBER) RETURN SELF AS RESULT AS BEGIN SELF.length := length; SELF.width := width; -- We compute the area rather than accepting it as a parameter. SELF.area := length * width; RETURN; END; END; / DECLARE r1 rectangle; r2 rectangle; BEGIN -- We can still call the default constructor, with all 3 parameters. r1 := NEW rectangle(10,20,200); -- But it is more robust to call our constructor, which computes -- the AREA attribute. This guarantees that the initial value is OK. r2 := NEW rectangle(10,20); END; /
| 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) |


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