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:

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;
/

 

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