Wednesday 27 November 2013

75. Attributes pada PL-SQL

1.    Attributes

Variable dan cursor PL/SQL memiliki attributes, yang merupakan property yang mengijinkan kita mereferensi tipe data dan struktur dari item tanpa mengulangi definisinya. Column-column dan table-table database memiliki attribute yang serupa, dimana kita dapat menggunakannya untuk kemudahan pemeliharaan. Tanda persen (%) bertindak sebagai indikator attribute.

8.1    %TYPE

Attribute %TYPE menyediakan tipe data untuk variable atau kolom database. Hal ini khususnya berguna ketika mendeklarasikan variable-variable yang akan menyimpan nilai-nilai database. Sebagai contoh, asumsikan bahwa ada kolom dengan nama title di dalam
table books. Untuk mendeklarasikan variable bernama my_title yang memiliki tipe data sama dengan kolom title, gunakan dot notation (.) dan attribute %TYPE, seperti berikut ini:
my_title books.title%TYPE;
Mendeklarasikan my_title dengan %TYPE memiliki dua keuntungan. Pertama, kita tidak perlu tahu tipe data sebenarnya dari kolom title. Kedua, jika kita mengubah definisi database untuk title (misalnya memanjangkan nilai string-nya), tipe data my_title berubah secara otomatis mengikuti perubahan tipe data kolom title.

8.2    %ROWTYPE
         
Di dalam PL/SQL, record digunakan untuk mengelompokkan data. Record terdiri dari sejumlah field-field terkait dimana nilai-nilai data disimpan. Attribute %ROWTYPE menyediakan tipe record yang merepresentasikan baris data pada table. Record dapat menyimpan seluruh baris data yang di-select dari table atau dihasilkan dari cursor atau cursor variable.
Kolom di dalam baris data dan field-field yang terkait dengannya di dalam record memiliki nama dan tipe data yang sama. Di dalam contoh di bawah ini, kita mendeklarasikan record bernama dept_rec. Field-field-nya memiliki nama-nama dan tipe-tipe data yang sama dengan kolom-kolom pada table dept.
DECLARE
dept_rec dept%ROWTYPE; -- declare record variable
Gunakan tanda titik (.) untuk mereferensi field-field, seperti ditunjukkan oleh contoh berikut ini:
my_deptno := dept_rec.deptno;
Jika kita mendeklarasikan cursor yang menampilkan last name, salary, hire date dan job title dari employee, kita dapat menggunakan %ROWTYPE untuk mendeklarasikan record yang menyimpan informasi yang sama, seperti berikut ini:
DECLARE
CURSOR c1 IS
SELECT ename, sal, hiredate, job FROM emp;
emp_rec c1%ROWTYPE; -- declare record variable that represents
-- a row fetched from the emp table
Ketika kita mengeksekusi perintah:
FETCH c1 INTO emp_rec;
nilai di dalam kolom ename dari table emp diberikan ke field ename dari emp_rec, nilai dari kolom sal diberikan ke field sal, dan begitu seterusnya.
                                                     



No comments:

Post a Comment