PL/SQL Object Types

10.5.2.1. Bahasa-bahasa yang Diperbolehkan untuk Methods

Oracle membebaskan kita untuk mengimplementasikan object methods di dalam PL/SQL, Java atau C. Kita dapat mengimplementasikan type methods di dalam Java atau C dengan menyediakan sebuah call specification di dalam type kita. Sebuah call spec mem-publish sebuah Java method atau external C function di dalam Oracle data dictionary. Ia mempublikasikan rutin dengan memetakan name, parameter types, dan return type terhadap SQL.

10.5.2.2. Parameter SELF

MEMBER methods menerima sebuah built-in parameter dengan nama SELF, yang mana merupakan sebuah instance dari object type. Baik dideklarasikan secara implisit atau eksplisit, ia selalu menjadi parameter pertama yang dilewatkan ke sebuah MEMBER method. Namun, STATIC methods tidak dapat menerima atau mereferensi SELF.

Di dalam method body, SELF menunjuk kepada object yang method-nya dijalankan. Sebagai contoh, method transform berikut ini mendeklarasikan SELF sebagai sebuah parameter IN OUT:

CREATE TYPE Complex AS OBJECT (
MEMBER FUNCTION transform (SELF IN OUT Complex) ...

Kita tidak dapat menentukan sebuah datatype berbeda untuk SELF. Di dalam MEMBER functions, jika SELF tidak di deklarasikan, parameter mode-nya secara default adalah IN. Namun, di dalam MEMBER procedures, jika SELF tidak di deklarasikan, parameter mode-nya secara default adalah IN OUT. Kita tidak dapat menentukan parameter mode OUT untuk SELF.

Seperti yang ditunjukkan oleh contoh berikut ini, methods dapat mereferensi kepada attributes dari SELF tanpa sebuah qualifier:

CREATE FUNCTION gcd (x INTEGER, y INTEGER) RETURN INTEGER AS
-- find greatest common divisor of x and y
ans INTEGER;
BEGIN
  IF (y <= x) AND (x MOD y = 0) THEN
    ans := y;
  ELSIF x < y THEN
    ans := gcd(y, x);
  ELSE
    ans := gcd(y, x MOD y);
  END IF;
  RETURN ans;
END;
CREATE TYPE Rational AS OBJECT (
num INTEGER,
den INTEGER,
MEMBER PROCEDURE normalize,
...
);
CREATE TYPE BODY Rational AS
MEMBER PROCEDURE normalize IS
g INTEGER;
BEGIN
  g := gcd(SELF.num, SELF.den);
  g := gcd(num, den); -- equivalent to previous statement
  num := num / g;
  den := den / g;
END normalize;
...
END;

Dari sebuah perintah SQL, jika kita memanggil sebuah MEMBER method pada sebuah nul instance (yaitu, SELF bernilai null), method tidak dijalankan dan sebuah null dihasilkan. Dari sebuah perintah procedural, jika kita memanggil sebuah MEMBER method pada sebuah null instance, PL/SQL memunculkan predefined exception SELF_IS_NULL sebelum method tersebut dijalankan.

 

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